在eclipse(pydev)中的pyqt5代码中遇到异常时缺少回溯

时间:2017-06-09 00:51:59

标签: python eclipse pydev pyqt5

这可能是过去一年未回答的问题的轻微重复,但我希望我能提供更多信息并看到答案。

问题是,一旦代码进入PyQt5的循环,任何崩溃都不会导致回溯显示在控制台或我所知道的任何其他位置,但是如果只是从同一个程序运行,则会显示Traceback没有问题命令行使用与eclipse使用完全相同的命令。

在单独的计算机上干净安装所有列出的组件后,

问题得到确认。

构建-ENV:
eclipse neon 4.6.3 - 64bit Java
pydev 5.8
python 3.6.1 64或32位版本
PyQt 5.8.2 - 通过pip3安装

这是一个完整的微程序来演示这个问题,如果我从命令行运行它并单击按钮,我会得到一个回溯,但是如果程序运行我没有得到一个,并且在eclipse中按下按钮。

from PyQt5 import QtWidgets
import sys

class MainWindow(QtWidgets.QMainWindow):
    def __init__(self):
        super().__init__()
        self.btn = QtWidgets.QPushButton('text', self)
        self.btn.clicked.connect(self.handleButton)

    def handleButton(self):
        error_trigger


if __name__ == '__main__':
    print ("Start")
    app = QtWidgets.QApplication(sys.argv)
    #error_trigger
    myapp = MainWindow()
    myapp.show()
    sys.exit(app.exec_())

是否有人知道会导致此行为的任何已知问题或配置选项?

1 个答案:

答案 0 :(得分:2)

在互联网上进行了大量随机浏览,但最终找到了解决问题所需的代码,此处发布以供具有相同问题的其他人参考。当我终于找到它时显而易见。 ;)

from PyQt5 import QtCore
import traceback, sys


if QtCore.QT_VERSION >= 0x50501:
    def excepthook(type_, value, traceback_):
        traceback.print_exception(type_, value, traceback_)
        QtCore.qFatal('')
sys.excepthook = excepthook

希望这有助于其他人。