2016-04-01 22 views
-1

私はバグのエラーがなく、GUIを実行するとGUIに「TIMER」が表示されないのはなぜですか?白い箱が表示されます。私はフォーラムに似たような問題を探してみたが、見つけられなかった。 CODE:あなたが定義した関数を実行したい場合はPython tkinter - テキストが表示されない(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

動作しますか?これはコード全体ですか?インデントは実際のコードと一致していますか?あなたの実際のコードは 'sticky'ではなく' stick'という名前の引数を使いますか? – TigerhawkT3

+0

Iveはpythonを始めたばかりなので、「このクラスをインスタンス化する」ということを本当に理解できません。どういう意味ですか?はい、私のインデントは実際のコードと一致します。私のコードはスティックを使用しますが、スティッキーに変更しようとしましたが、それを実行しても効果はありませんでした。 –

+0

クラスを定義してから、そのクラスのオブジェクトを作成しないでください。 'if __name __... 'ブロックがインスタンス化しないクラスの中にある場合、そのクラスをインスタンス化するまでは実行されません。一般に、そのブロックは最も外側のインデントレベルに配置されます。 – TigerhawkT3

答えて

1

あなたはクラスのオブジェクトをインスタンス化する必要があります。関数は、クラス構造内でコンストラクタ(init)から呼び出されます。

第2に、文の字下げが間違っている場合。

第3に、パラメータとしてinit関数にルートオブジェクトを送信する必要があります。

これは、あなたがどこでも、このクラスをインスタンス化してください

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

ありがとうございました!私はちょうど "if"の字下げを修正し、うまくいきました。 –

関連する問題