如何使用Python和Tkinter创建任意数量的窗口?

如何使用Python和Tkinter创建任意数量的窗口?,python,user-interface,window,tkinter,Python,User Interface,Window,Tkinter,我正在编写一个没有主窗口的应用程序(它在另一个应用程序的Python解释器中运行),我认为我有一个很好的解决方案让Tkinter合作——我把Tkinter.Tk类变成了一个 然后我有了我的窗口s,它是从Tkinter.Toplevel的子类,默认为parent=RootWindow()。结果应该是我可以创建任意数量的窗口s,它们将使用相同的根 在第一个窗口中,它可以正常工作一次,但在那之后,一切都变得一团糟( 我做错了什么?这是一个可行的解决方案吗 谢谢 编辑:我应该补充一点,即使图片中有其他

我正在编写一个没有主窗口的应用程序(它在另一个应用程序的Python解释器中运行),我认为我有一个很好的解决方案让Tkinter合作——我把
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()