Traceback missing when exception encountered in pyqt5 Code in eclipse(pydev)(在eclipse(Pydev)中的pyqt5代码中遇到异常时缺少回溯)
问题描述
这可能是对过去一年未回答的问题的轻微重复,但我希望我能提供更多信息,并看到它得到回答。
问题是,一旦代码进入到PyQt5的循环中,任何崩溃都不会导致回溯显示在控制台或我所知道的任何其他地方,但是,如果相同的程序只是从命令行使用与eclipse使用的完全相同的命令运行,回溯就会毫无问题地显示出来。
在单独的计算机上全新安装所有列出的组件后确认了问题。
构建环境:
ECLIPSE NEON 4.6.3-64位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_())
是否有人知道会导致此行为的任何已知问题或配置选项?
推荐答案
它在互联网上随机浏览了很多次,但最终找到了解决该问题所需的代码,这里发布的代码供有相同问题的其他人参考。当我最终找到它的时候很明显。;)
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
希望这能帮助他人。
这篇关于在eclipse(Pydev)中的pyqt5代码中遇到异常时缺少回溯的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持编程学习网!