2016-04-01 30 views
-1

Hata hatalarım yok ve çalıştırdığımda 'TIMER' uygulamasının neden GUI'de görünmediğini merak ediyordum. Sadece beyaz bir kutu gösterir. Forumları benimkiyle benzer bir konu için aramayı denedim, ancak bulamadım. KODU: tanımladığınız fonksiyonlarını çalıştırmak istiyorsanızPython tkinter - Metin gösterilemiyor (GUI)

import tkinter 


class study_timer: 
    def __init__(self, master): 
     self.master = master 
     self.mainframe = tkinter.Frame(self.master, bg='white') 
     self.mainframe.pack(fill = tkinter.BOTH, expand=True) 

     self.build_grid() 
     self.build_banner() 

    def build_grid(self): 
     self.mainframe.columnconfigure(0, weight=1) 
     self.mainframe.rowconfigure(0, weight=0) 
     self.mainframe.rowconfigure(0, weight=1) 
     self.mainframe.rowconfigure(0, weight=0) 

    def build_banner(self): 
     banner = tkinter.Label(
      self.mainframe, 
      bg='black', 
      text='TIMER', 
      fg='white', 
      font=('Ravie Regular', 30) 
     ) 
     banner.grid(
      row=0, column=0, 
      stick='ew', 
      padx=10, pady=10 
     ) 

    if __name__ == "__main__": 
     root = tkinter.Tk() 
     root.mainloop() 
+0

çalışacak? Bütün kod bu mu? Girinti gerçek kodunuza uyuyor mu? Gerçek kodunuz, 'yapışkan' yerine 'argüman' argümanını kullanıyor mu? – TigerhawkT3

+0

Sadece python'u başlattım, bu yüzden 'bu sınıfı yaratma' ile ne demek istediğini anlamadım, bunun ne anlama geldiğini açıklıyor musunuz? Evet, girintim gerçek kodla eşleşiyor. Kodum çubuğu kullanıyor ama yapışkan olarak değiştirmeyi denedim ve çalıştırdığımda hiçbir etkisi olmadı. –

+0

Bir sınıf tanımlar ve sonra bu sınıfın bir nesnesini oluşturmazsınız. Eğer '__name __...' bloğu, sınıfın içinde yer almazsa, o sınıfı başlatmaya başlayana kadar idam edilmeyecektir. Genel olarak, bu blok en dış girinti seviyesine yerleştirilir. – TigerhawkT3

cevap

1

Sen sınıfın bir nesne örneğini gerekir. Fonksiyonlar, sınıf yapınızdaki kurucudan (init) çağrılır.

İfadenin girintisi yanlışsa, ikinci.

Üçüncü olarak, kök nesnesini init işlevine parametre olarak göndermelisiniz.

Bu her yerde bu sınıfı örneğini musunuz

import tkinter 


class study_timer: 
    def __init__(self, master): 
     self.master = master 
     self.mainframe = tkinter.Frame(self.master, bg='white') 
     self.mainframe.pack(fill = tkinter.BOTH, expand=True) 

     self.build_grid() 
     self.build_banner() 

    def build_grid(self): 
     self.mainframe.columnconfigure(0, weight=1) 
     self.mainframe.rowconfigure(0, weight=0) 
     self.mainframe.rowconfigure(0, weight=1) 
     self.mainframe.rowconfigure(0, weight=0) 

    def build_banner(self): 
     banner = tkinter.Label(
      self.mainframe, 
      bg='black', 
      text='TIMER', 
      fg='white', 
      font=('Ravie Regular', 30) 
     ) 
     banner.grid(
      row=0, column=0, 
      stick='ew', 
      padx=10, pady=10 
     ) 

if __name__ == "__main__": 
    root = tkinter.Tk() 
    ss = study_timer(root) 
    root.mainloop() 
+0

Teşekkür ederim bu işe yaradı! Sadece "if" girintisini tamir ettim ve işe yaradı. –