如何区分用户导致的事件和OS“激发”的事件

时间:2017-06-09 20:40:41

标签: python events wxpython exit

我正在编写一个应用程序,当用户尝试关闭它时必须转到系统托盘。 像Bit Torrent一样。它只是变成了一个后台进程。

麻烦的是,即使操作系统要求你的应用关闭,wx.EVT_CLOSE也会被抛出。 所以,如果我使用wx.EVT_CLOSE并且用户关闭程序一切都很好 - 它会隐藏,但如果用户那么,程序在后台运行,那么关闭,那么,显然存在问题。

嗯,这个特殊情况可以通过使用:

来解决
if not self.IsShown(): e.Skip(); return

在wx.EVT_CLOSE处理程序中。但是如果程序GUI启动并且用户关闭,那么,首先而不是关闭程序只需要self.Hide()。然后操作系统看到该程序没有关闭,所以它再次要求它这样做。等等。操作系统强行杀死之前遇到很多麻烦。如果确实如此,则不会保存用户的设置。

我的问题是:是否有一种简单的方法可以告诉用户何时请求直接关闭以及何时OS要求应用关闭? 我的意思是,它是否受到wx的支持? 如果没有,我会使用信号模块修补一些东西,或者这里有人可能有更好的想法。

0 个答案:

没有答案