我有一个最初使用PyQt4在Python 3.4中编写的Windows应用程序,该应用程序通过信号和插槽将stderr重定向到对话框。 This posting描述了我如何使其工作(最后查看最终代码)。它运行得很好,捕获了通常在控制台上看到的所有详细的详细信息。这是一个典型的屏幕截图:
当我安装Python 3.5.2,PyQt5并升级了我的几个软件包时,它已经不再适用了。现在当我遇到错误时,我的整个应用程序立即关闭,我无法追踪错误。
然而,当我在pydev调试器中运行我的应用程序时,我的好窗口stderr消息又回来了。我将调试器设置为中断所有错误,这样就可以显示我的窗口stderr文本。
还有另一种方法可以恢复窗口错误消息:将我的一个核心软件包(lmfit)从最新的0.9.5恢复到我正在使用的早期版本0.9.3。
任何人都可以建议可能发生的事情吗?我已经向lmfit开发人员询问了他们可能已经改变了什么,并尝试了十几种不同的选择而没有运气。
答案 0 :(得分:1)
过滤stderr消息有点骇人听闻。使用excepthook集中处理未处理的异常。 traceback模块可用于以各种方式格式化异常。
如果您还想处理Qt消息,请使用qInstallMessageHandler。要格式化这些消息,您可以使用qFormatLogMessage和qSetMessagePattern。所有这些功能都在QtCore模块中。