如何使用Python和Tkinter创建任意数量的窗口?
我正在编写一个没有主窗口的应用程序(它在另一个应用程序的Python解释器中运行),我认为我有一个很好的解决方案让Tkinter合作——我把如何使用Python和Tkinter创建任意数量的窗口?,python,user-interface,window,tkinter,Python,User Interface,Window,Tkinter,我正在编写一个没有主窗口的应用程序(它在另一个应用程序的Python解释器中运行),我认为我有一个很好的解决方案让Tkinter合作——我把Tkinter.Tk类变成了一个 然后我有了我的窗口s,它是从Tkinter.Toplevel的子类,默认为parent=RootWindow()。结果应该是我可以创建任意数量的窗口s,它们将使用相同的根 在第一个窗口中,它可以正常工作一次,但在那之后,一切都变得一团糟( 我做错了什么?这是一个可行的解决方案吗 谢谢 编辑:我应该补充一点,即使图片中有其他
Tkinter.Tk
类变成了一个
然后我有了我的窗口
s,它是从Tkinter.Toplevel
的子类,默认为parent=RootWindow()
。结果应该是我可以创建任意数量的窗口
s,它们将使用相同的根
在第一个窗口
中,它可以正常工作一次,但在那之后,一切都变得一团糟(
我做错了什么?这是一个可行的解决方案吗
谢谢
编辑:我应该补充一点,即使图片中有其他东西在运行,问题也可以通过使用RootWindow
作为Tkinter.Toplevel
的父级来复制
编辑:我重写了Window.mainloop
,因此所有内容都使用RootWindow
事件循环
def mainloop(self):
self.master.wait_window(self)
然后我创建每个可见窗口,如下所示:
测试=窗口()
test.mainloop()
这似乎是可行的,因为窗口确实出现了,但它们的内容以一种难以描述的奇怪方式打包。它在完全没有内容和所有内容水平挤压并垂直扩展之间交替出现。一个问题似乎是您忘了启动事件循环。或者,根据您对事件的进一步编辑估计,您可能要启动多个主循环。您只需要从根窗口运行一个主循环 Tkinter当然允许任意数量的顶级窗口,但除非我的第一个猜测是正确的,否则您的问题似乎没有足够的细节来说明问题所在。是否为每个顶级窗口调用mainloop()一次?如果是,请停止这样做。您必须只运行一个mainloop()。
def mainloop(self):
self.master.wait_window(self)
test = Window()
test.mainloop()