wxPython应用程序 - 确保所有对话框都被破坏

时间:2010-06-24 17:38:04

标签: python event-handling wxpython destructor

我正在开发一个需要使用各种Dialogs的应用程序。如果某人在解除对话框之前关闭了应用程序,那么我很难确保我的Dialogs被正确销毁。我希望使用这样的东西:

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()

我目前遇到的行为是,如果有人打开一个Dialog,然后在解除Dialog之前关闭Application,则应用程序不会完全退出。 MAIN_WINDOW是对已注册为我的顶级窗口的框架的引用。提前谢谢!

1 个答案:

答案 0 :(得分:1)

我试图错误地使用事件冒泡。解决方案是确保对话框是顶级窗口的子级,以便应用程序退出也强制对话框也要销毁。

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()