为什么有两个窗口显示?

时间:2017-12-30 18:03:56

标签: python tkinter

当运行以下代码时,会出现一个额外的空窗口。为什么会发生这种情况,如何解决?

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()

1 个答案:

答案 0 :(得分:2)

最简单的方法是替换:

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

使用:

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

显示了两个窗口,因为有Tkrootapp两个实例。 app也是Tk的一个实例,Deneme继承自Tk

注意: It's not suggested to have multiple instances of Tk。如果您以后需要多个窗口,则应使用Toplevel代替Tk

此外,您只需从Deneme而不是Frame继承Tk,但您需要为它配置一点,以便您可以将其父级分配为{{ 1}}。然后创建像root

这样的实例