我正在开发一个需要使用各种对话框的应用程序。如果有人在取消对话框之前关闭应用程序,我很难以确保正确销毁对话框的方式绑定事件。我希望使用这样的工具:
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()
我当前遇到的行为是,如果有人打开了一个对话框,然后在关闭该对话框之前关闭该应用程序,则该应用程序不会完全退出。主窗口是对注册为顶级窗口的框架的引用。事先谢谢!
我试图错误地使用事件冒泡。解决方案是确保对话框是顶级窗口的子级,这样退出的应用程序也会强制销毁对话框。
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()