Python 如何区分由用户引起的事件和那些;挑起;由操作系统

Python 如何区分由用户引起的事件和那些;挑起;由操作系统,python,events,wxpython,exit,Python,Events,Wxpython,Exit,我正在编写一个应用程序,当用户试图关闭它时,它必须进入系统托盘。 就像BitTorrent一样。它只是变成了一个后台进程 问题是,即使操作系统要求你的应用程序关闭,wx.EVT_CLOSE也会被抛出。 所以,如果我使用wx.EVT_CLOSE,用户关闭程序,一切都很好-它进入隐藏状态,但是如果用户在后台运行程序时关闭,那么,显然存在问题 那么,这种特殊情况可以通过以下方式解决: if not self.IsShown(): e.Skip(); return 在wx.EVT_关闭处理程序中。但若

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

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

那么,这种特殊情况可以通过以下方式解决:

if not self.IsShown(): e.Skip(); return
在wx.EVT_关闭处理程序中。但若程序GUI启动,用户要求关闭,那个么,首先,不是关闭程序,而是执行self.Hide()。然后操作系统发现程序没有关闭,所以它再次要求它关闭。等等在操作系统强制杀死它之前有很多麻烦。当它这样做时,用户的设置不会被保存

我的问题是:有没有一种简单的方法可以告诉用户何时直接请求关闭,以及操作系统何时请求关闭应用程序? 我是说,wx支持它吗? 若并没有,我会用信号模块修补一些东西,或者这里的人可能会有更好的主意