Bir başka kod editörü: Visual Python

Programlamayla çokça haşır neşir olan herkesin merak saldığı gibi ben de bir kod editörü yazmaya merak salmış bulunmaktayım. :smile:

Editör uygulamamın GitHub adresi şu: https://github.com/ismailarilik/visual-python

Şu anda dosya açma, kaydetme, renklendirme (performansı fena değil), geri alma-yineleme (undo-redo) gibi özellikleri var, yani henüz başlangıç aşamasında.

Kodu buraya koymuyorum; kalabalık olmasın, yukarıda linkini verdiğim GitHub reposundan bakabilirsiniz. :slight_smile:

20 Beğeni

Tebrikler. denedim iyi görünüyor. Bende Kivy ile
yaptım ama Kivy’de hazır widget var CodeInput diye :slight_smile: Sonucu da exec() ile döndürüyorum.

4 Beğeni

Hayırlı olsun bu kodları yazmak ne kadar zamanınızı aldı acaba?

Teşekkür ederim. Bir-iki gün civarı.

1 Beğeni
  1. satırda bir hata veriyor. Ancak neyden kaynaklandığını çözemedim.

Hata mesajını paylaşabilir misiniz?

Traceback (most recent call last):
  File "E:\hesap\editor\editor.py", line 166, in <module>
    editor.set_from_file(file_name)
  File "E:\hesap\editor\editor.py", line 47, in set_from_file
    self.insert(tk.END, file.read())
  File "C:\Users\user\AppData\Local\Programs\Python\Python36-32\lib\codecs.py", line 321, in decode
    (result, consumed) = self._buffer_decode(data, self.errors, final)
UnicodeDecodeError: 'utf-8' codec can't decode byte 0x89 in position 0: invalid start byte

İlginç, programda şuana kadar hata almadım. Siz hangi işlemden sonra bu hatayı alıyorsunuz?

Çalıştırırken vs code kullanırken hiç açılmıyor. IDLE hata verdiği halde açıyor.
İşletim sistemi win 10

Açmak istediğiniz dosyanın kodlaması UTF-8 değil anlaşılan. Dosyaları UTF-8 olarak açtığım için, kodlamaları UTF-8 olmalı. Ancak tabii ki bu olması gereken değil. Normalde dosyanın kodlaması algılanıp, o kodlama ile dosya açılmalı.

Tkinter uygulamalarını IDLE ile açmayın, sorunlar çıkıyor.

Dosya açarken değil. Uygulama açılırken veriyor bu hatayı. IDLE da kendi mainloop fonksiyonu sayesinde açıyor bunu. Vs code hiç açmıyor.

Uygulama açılırken en son açılan dosyayı otomatik açıyor. Görünen o ki; bu dosyanın kodlaması UTF-8 olmadığı için uygulama sorun çıkarıyor. Geçici çözüm için ev dizininizdeki “.editor.py.ini” dosyasını silmeyi deneyebilirsiniz.

Ben bir ara bu editörle fotoğraf açmayı denedim galiba. O yüzden bu olmuş olabilir. Dosya açma ekranı tekrar düzenlenmeli. Sadece python dosyalarına izin vermeli.

Kesinlikle. Sizden çok iyi bir testçi olur. :smile:

Tüm metin dosyalarını açabilmesini düşünmüştüm başta. Tabii şu anda Python dosyaları dışındakileri renklendiremez. Ama dediğiniz gibi ikili dosyaları açamaması lazım.

Sanıyorum bunu nasıl yapacağınızı biliyorsunuz ama izninizle ben yine de paylaşayım, bilgi olarak dursun burada.

  1. satırdaki şu kısım:
file_name = set_file_name(tk_filedialog.askopenfilename())

aşağıdaki gibi değiştirilirse program tarafından sadece .py ve .txt uzantılı dosyalar görünür hale gelir.

file_name = set_file_name(tk_filedialog.askopenfilename(filetypes=[("Python Belgeleri", ".py"), ("Metin Belgeleri", ".txt")]))
1 Beğeni

Hocam programı baştan sona inceledim elinize sağlık.
Klasic olarak örnek sınıf yazıyorum ileri düzeyde örnek sınıflarda kendimi geliştirmek için tavsiyeleriniz var mı?
Başka arkadaşlarda yardımcı olurlarsa sevinirim.

1 Beğeni

Teşekkürler. Nesneye yönelik programlama pratiklerine dikkat etmedim programımda (Yine kendisi ile geliştirdiğim için düzenleme olanaklarım kısıtlıydı.). Bu sebeple nesneye yönelik programlama ile ilgili bu programdan örnek almamanızı tavsiye ederim.

Örnek sınıf nedir?

class içinde def init ile örnek sınıf oluşturmak

Python’da örnek sınıf diye bir kavram olduğunu sanmıyorum. Sınıf ve o sınıfın örneği kavramları var ama.

class A:
    sinif_niteligi = 10

    def __init__(self):
        self.ornek_niteligi = 5


print(A.sinif_niteligi)
# Sonuç: 10

print(A.ornek_niteligi)
# Sonuç: AttributeError: type object 'A' has no attribute 'ornek_niteligi'
# Örnek niteliği A sınıfına ait bir özellik değil.

# Örnek niteliği A sınıfının örneğine ait bir özellik.
print(A().ornek_niteligi)
# Sonuç: 5

# A --> Sınıf
# A() --> A sınıfının örneği

aynn öyle sınıf örnek niteliği taşıyor bununla ilgili ileri düzeyde kendimi nasıl geliştirebilirim