我正在编写一个应用程序,当用户尝试关闭它时必须转到系统托盘。 像Bit Torrent一样。它只是变成了一个后台进程。
麻烦的是,即使操作系统要求你的应用关闭,wx.EVT_CLOSE也会被抛出。 所以,如果我使用wx.EVT_CLOSE并且用户关闭程序一切都很好 - 它会隐藏,但如果用户那么,程序在后台运行,那么关闭,那么,显然存在问题。
嗯,这个特殊情况可以通过使用:
来解决if not self.IsShown(): e.Skip(); return
在wx.EVT_CLOSE处理程序中。但是如果程序GUI启动并且用户关闭,那么,首先而不是关闭程序只需要self.Hide()。然后操作系统看到该程序没有关闭,所以它再次要求它这样做。等等。操作系统强行杀死之前遇到很多麻烦。如果确实如此,则不会保存用户的设置。
我的问题是:是否有一种简单的方法可以告诉用户何时请求直接关闭以及何时OS要求应用关闭? 我的意思是,它是否受到wx的支持? 如果没有,我会使用信号模块修补一些东西,或者这里有人可能有更好的想法。