什么时候在本地范围创建的wxPython无模式框架实际上被销毁?

时间:2017-11-20 18:57:30

标签: wxpython

我有一个wxPython应用程序,我将主框架上的一个wx.EVT_MENU事件绑定到一个弹出一个孩子wxFrame的回调(我希望弹出的窗口是无模式的)在那种情况下使用wxFrame。我的回调看起来像:

def on_open_my_frame(self,event):
    local_frame = MyFrame(self)
    local_frame.Show()

此代码的功能在于事件实际上弹出了我可以与之交互的帧。但是,我有点惊讶它的工作原理。实际上,由于我的无模式框架的本质,我希望垃圾收集器一旦超出local_frame方法的范围就对on_open_my_frame采取行动。该代码有效吗?或者换句话说,在wxPython中是否有某种机制可以阻止窗口在显示之前被销毁?

1 个答案:

答案 0 :(得分:1)

GUI框架与其他应用程序的工作方式略有不同,因为它们是基于事件的,事件循环连续运行。因此,当你启动一个框架并显示它时,框架就会挂起,等待用户对它做一些事情。换句话说,您创建的小部件等待用户与它们交互,从而生成事件。

框架退出的唯一方法是,如果您将自己创建的frame实例明确告知Close()Destroy()。否则,框架将等待用户关闭它或以其他方式与其交互。