2017-12-30 44 views
0

아래 코드를 실행하면 추가 빈 창이 나타납니다. 왜 그런 일이 일어나고 어떻게 고칠 수 있습니까?왜 두 개의 창이 표시됩니까?

import tkinter as tk 

class Deneme(tk.Tk): 
    def __init__(self): 
     super().__init__() 
     self.smartGui() 

def smartGui(self): 
    tk.Label(self, text="Name").grid(row=0,column=0) 
    tk.Entry(self).grid(row=0,column=1, columnspan=2) 
    tk.Label(self, text="Surname").grid(row=1,column=0) 
    tk.Entry(self).grid(row=1,column=1, columnspan=2) 
    tk.Label(self, text="City").grid(row=0,column=4) 
    tk.Entry(self).grid(row=0,column=5, columnspan=2) 
    tk.Label(self, text="Explain").grid(row=3, column=0) 

def main(): 
    root = tk.Tk() 
    app = Deneme() 
    root.mainloop() 

if __name__ == "__main__": 
    main() 

답변

2

가장 간단한 방법은 대체하는 것입니다 :

def main(): 
    root = tk.Tk() 
    app = Deneme() 
    root.mainloop() 

로 : Tk, rootapp 인스턴스가 같은

def main(): 
    app = Deneme() 
    app.mainloop() 

가 표시 두 개의 창이 있습니다. appTk의 인스턴스이므로 DenemeTk에서 상속됩니다.

참고 :It's not suggested to have multiple instances of Tk. 나중에 여러 창을 사용하려면 Tk 대신 Toplevel을 사용해야합니다.


또한, 당신은 단순히 Frame 대신 Tk에서 Deneme을 상속 할 수 있지만, 당신이 root로 부모를 할당 할 수 있도록 당신은 조금 더를 구성 할 것입니다. 그런 다음 app = Deneme(root)과 같은 인스턴스를 만듭니다.