2017-11-06 35 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'이

당신에게 두 변수에 Main(root)의 결과를 할당하고 거기에서 build()를 호출해야 거기에 묶여 있지 않습니다. 아마'__init__'에 넣을 필요가 있습니다. 나는 tkinter에서 경험이있는 사람에게 맡깁니다. – wim

+0

@wim 그래, 맞아. 코드를 더 가까이에서 보지 않으면 내 잘못입니다. 내 의견을 삭제했습니다. –

+0

빌드 함수를 작동시킬 수 없습니다 - 레이블을 만들고 기본 창에 추가하려면 ... 함수 호출에 세 개의 매개 변수가 없기 때문에 오류가 발생합니다. 정의에는 세 개의 매개 변수가 있습니다. 하지만 두 명만 보내면됩니다. – Chaunte

답변

0

클래스 최상위의 코드는 self 변수의 범위에서 실행되지 않습니다.

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

또는 __init__의 마지막에 전화 :

def __init__(self, root): 
    self.root = root 
    self.GUI() 
    self.build('hello_label', 'helloagainworld')