wxPython应用 - 确保所有对话框被销毁
我正在开发一个应用程序,需要使用各种对话框(Dialog)。我遇到了一些麻烦,想确保如果有人在关闭对话框之前就关闭了应用程序,我的对话框能被正确销毁。我本来想用这样的方式来处理:
class Form(wx.Dialog):
def __init__(self):
wx.Dialog.__init__(None, -1, "Dialog")
self.Bind(wx.EVT_CLOSE, self.onClose)
self.Bind(wx.EVT_CLOSE, self.onClose, MAIN_WINDOW)
...
def onClose(self, evt):
self.Destroy()
但现在遇到的问题是,如果有人打开了一个对话框,然后在关闭对话框之前就关闭了应用程序,应用程序并没有完全退出。MAIN_WINDOW是我注册的顶层窗口的引用。谢谢大家的帮助!
1 个回答
2
我之前在使用事件冒泡的时候搞错了。解决办法是确保对话框是顶层窗口的子窗口,这样当应用程序退出时,对话框也会被强制关闭。
class Form(wx.Dialog):
def __init__(self):
wx.Dialog.__init__(MAIN_WINDOW, -1, "Dialog")
self.Bind(wx.EVT_CLOSE, self.onClose)
...
def onClose(self, evt):
self.Destroy()