当运行以下代码时,会出现一个额外的空窗口。为什么会发生这种情况,如何解决?
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()
答案 0 :(得分:2)
最简单的方法是替换:
def main():
root = tk.Tk()
app = Deneme()
root.mainloop()
使用:
def main():
app = Deneme()
app.mainloop()
显示了两个窗口,因为有Tk
,root
和app
的两个实例。 app
也是Tk
的一个实例,Deneme
继承自Tk
。
注意: It's not suggested to have multiple instances of Tk
。如果您以后需要多个窗口,则应使用Toplevel
代替Tk
。
此外,您只需从Deneme
而不是Frame
继承Tk
,但您需要为它配置一点,以便您可以将其父级分配为{{ 1}}。然后创建像root
。