Bu Kodu Nasıl Nesne Tabanlı Hale Getirebilirim?

Merhaba arkadaşlar.

TkInter ile ilgili şu örneği, nesne tabanlı hale getirmek istiyorum, kendim de bir kaç deneme yaptım ama sürekli hata aldım. Bu konuda yeni sayılırım, yardımcı olursanız memnun olurum. Şimdiden teşekkür ederim. :slight_smile:

Kod:

from tkinter import *

window = Tk()

for i in range(3):
    for j in range(3):
        frame = Frame(
            master=window,
            relief=RAISED,
            borderwidth=1
        )
        frame.grid(row=i, column=j)
        label = Label(master=frame, text=f"Row {i}\nColumn {j}")
        label.pack()

window.mainloop()

Ben ortada sınıf haline getirilecek bir şey göremiyorum, import kısmından sonrasını bir fonksiyona alabilirsiniz.

Biraz daha denedikten sonra çözmeyi başardım. Yine de önerilere açığım.

Kod:

from tkinter import *


class Window:
  def __init__(self, root):
    self.root = root

    self.__main__()
    self.root.mainloop()

  def __main__(self):
    for i in range(3):
      for j in range(3):
        table = Frame(
          master=self.root,
          relief=RAISED,
          borderwidth=1
        )
        table.grid(row=i, column=j)
        Label(master=table, text=f"{i} x {j}").pack()


if __name__ == "__main__":
  root = Tk()
  Window(root)

__ ile başlayıp biten metotların dilde veya standart kütüphanede özel bir anlamı oluyor, bu şekilde kullanmak doğru değil.


Sınıfa bakınca yukarıda yazdığım anlaşıyor zaten, sınıf fonksiyon gibi kullanılmış.

Evet, yazım şekli benziyor ama herhangi bir metodla çakışmadığı için bu şekilde kullanmayı tercih ettim.


Sınıfları, -bazen- “gelişmiş fonksiyonlar” olarak kullanmak hoşuma gidiyor, zaten bu bir proje değil, sadece denemeler yaparak öğrenmeye çalışıyorum.

Selamlar, şu konuda istediğine nisbeten benzer bir örnek var.

Python - Tkinter’da Pencere İçinde Pencere Yapılabilir Mi? - Python / TkInter - YazBel forumu

1 Beğeni