彻底终止wxPython应用程序

时间:2010-09-09 02:43:33

标签: python wxpython

我正在开发一个具有多个框架和一个串行连接的wxPython应用程序。我需要能够干净地退出应用程序,在应用程序终止时关闭串行连接。

最好的方法是什么?这应该由wxApp的子类处理吗?

谢谢, 约什

2 个答案:

答案 0 :(得分:1)

不完全确定你在这里遇到什么问题,但我会在黑暗中拍摄并假设这是一个程序组织/设计问题。

我可能有更好的方法不熟悉,但这是我尝试做的事情:创建一个“父”对象(不必具有任何特定类型),以保持对多个框架的引用。当其中一个帧从菜单或你拥有的东西接收到退出事件时,它会调用self.parent.broadcast_quit(),它会向它保存引用的每个帧发送一个退出事件。

这种方式表达了一种视图 - 控制器分离,其中帧是视图的一部分,父对象是告诉我何时关闭控制器 - 父可以很好地封装连接拆除也是如此,因为它可以随时了解哪些框架已关闭以及何时关闭。您可以详细了解如何拆除框架中的视图,然后在拆解过程中向控制器发送“我已完成”的消息,从而触发父母方面的最终拆解。

请参阅wx.PostEventCustom Event Classes的文档。 (事件是在non-blocking GUI中表达跨窗口消息的一种很好的规范化方式。)

答案 1 :(得分:0)

我通常使用我的关闭按钮的事件处理程序来关闭框架之前关闭连接和什么不关闭。如果要捕获右上角的“x”按钮,则需要绑定到EVT_CLOSE。不幸的是,当你这样做时,你需要调用你的框架的Destroy()方法而不是它的Close()方法,否则你将最终进入无限循环。