2017-11-06 15 views
0
import tkinter as tk 

class Main: 

    def __init__(self, root): 
     self.root = root 
     self.GUI() 

    def GUI(self): 
     label = tk.Label(self.root, text='Hello World') 
     label.pack() 

    def build(self, title, txt): 
     title = tk.Label(self.root, text=txt) 
     title.pack() 

    build('hello_label', 'helloagainworld') 

if __name__ == '__main__': 
    root = tk.Tk() 
    Main(root) 
    root.mainloop() 
+0

いいえ、 'self'がありますそこに縛られていない。おそらくそれは '__init__'に入れる必要があります、私はそれをtkinterの経験を持つ人に任せます – wim

+0

@wimそう、そうです。コードをもっと近く見ることができないという私のせいです。私のコメントを削除しました。 –

+0

ビルド関数を動作させることができません - ラベルを作成してメインウィンドウに追加するには...関数呼び出しに3つのパラメータがないのでエラーがスローされます - 定義には3つのパラメータがあり、私は2つだけ送る必要があります。 – Chaunte

答えて

0

クラスのトップレベルのコードは、self変数の範囲で実行されません。

次のいずれかの変数にMain(root)の結果を代入して、そこからbuild()を呼び出す必要があります:

mymain = Main(root) 
mymain.build('hello_label', 'helloagainworld') 

または__init__の最後にそれを呼び出す:

def __init__(self, root): 
    self.root = root 
    self.GUI() 
    self.build('hello_label', 'helloagainworld') 
関連する問題