使用标准python logging api记录pyqt4应用程序中的所有异常的最佳方法是什么?
我尝试在try中包装exec_(),除了块,并记录异常,但它只记录应用程序初始化的异常.
作为临时解决方案,我在try中包含了最重要的方法,除了块,但这不是唯一的方法.
我有一个显示一些小部件和按钮的 PyQt 程序。
我希望程序作为独立的 python 实例运行,或者在 ipython 环境中运行。在这种情况下,我在 Jupyter 控制台中使用以下魔术命令(以前我必须在启动 ipython qtconsole 时使用 --gui=qt)
%pylab qt
Run Code Online (Sandbox Code Playgroud)
为了有一个双向工作的程序,我的主模块有以下几行:
APP = QtGui.Qapplication.instance() # retrieves the ipython qt application if any
if APP is None:
APP = QtGui.QApplication(["foo"]) # create one if standalone execution
if __name__=='__main__':
APP.exec_() # Launch the event loop here in standalone mode
Run Code Online (Sandbox Code Playgroud)
这是我的问题:事件循环生成的异常很难被用户检测到,因为它们会在后台控制台中弹出。我想捕获事件循环中发生的任何异常,并显示警告(例如在 QMainWindow 状态栏中,让用户知道发生了异常)。
我尝试了几种策略,但 PyQt 和 Ipython 的内部机制之间似乎存在阴谋,使这成为不可能: