wxPython应用 - 确保所有对话框被销毁

1 投票
1 回答
725 浏览
提问于 2025-04-16 00:24

我正在开发一个应用程序,需要使用各种对话框(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()

撰写回答