Python Tkinter" wait_window()"永远不会继续

时间:2015-07-06 23:33:17

标签: python tkinter modal-dialog

我在python中有一个Tkinter应用程序,我正在尝试使用自定义对话框。所以我有一个主App类和一个扩展Dialog的{​​{1}}类。在Toplevel类的正文中,需要弹出App并允许用户输入可以传递给主Dialog的信息。

我知道我需要使用App方法,以便主应用程序在继续执行代码之前等待销毁对话框。但出于某种原因,即使在退出对话框后,程序也不会继续。

我的代码看起来像

wait_window()

当我运行应用程序时,对话框按预期显示,并按预期工作。但是,当我按下角落里的红色X时,程序不会继续。对话框关闭,"销毁"打印,所以我知道正在调用class App: def __init__(self): self.root = Tk() #more init code... #more unrelated methods... def analyze(self): dialog = Dialog() self.root.wait_window(dialog) print("Continuing...") #use the data collected in 'dialog' class Dialog(Toplevel): def __init__(self): Toplevel.__init__(self) #set up the components of the dialog #all input data gets saved as instance variables so I can access it self.mainloop() def destroy(self): print("Destroying") Toplevel.destroy(self) 方法,但是"继续"没有打印,也没有使用任何数据。

我尝试在对话框中添加一个按钮,调用destroy作为其命令来明确销毁它。我还尝试不覆盖self.destroy中的destroy方法,看看是否会导致它,但这些方法都没有效果。

我还在做Dialog而不是dialog.wait_window(),看看是否有帮助但是没有。

非常感谢任何帮助。如果需要更多代码,我可以提供。提前谢谢。

1 个答案:

答案 0 :(得分:1)

请勿再次拨打mainloop()。在程序的生命周期中,mainloop()应该始终被调用一次。