我有一个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
中是否有某种机制可以阻止窗口在显示之前被销毁?
答案 0 :(得分:1)
GUI框架与其他应用程序的工作方式略有不同,因为它们是基于事件的,事件循环连续运行。因此,当你启动一个框架并显示它时,框架就会挂起,等待用户对它做一些事情。换句话说,您创建的小部件等待用户与它们交互,从而生成事件。
框架退出的唯一方法是,如果您将自己创建的frame
实例明确告知Close()
或Destroy()
。否则,框架将等待用户关闭它或以其他方式与其交互。