2010-09-09 43 views
1

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

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

感谢, 乔希

回答

1

不能完全确定你有什么用这里的麻烦,但我会采取瞎猜,并认为这是一个程序组织/设计问题。

可能有更好的方法,我不熟悉,但这是我想要做的:创建一个“父”对象(不必有任何特定的类型),保持引用多个帧。当其中一个框架接收到菜单中的退出事件或您有什么时,它会调用self.parent.broadcast_quit(),它会将退出事件发送到每个持有引用的框架。

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

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

0

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

+0

你不需要销毁。您只需跳过()EVT_CLOSE事件即可。 – FogleBird 2010-09-14 13:59:16