本文介紹了在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代碼中遇到異常時缺少回溯的文章就介紹到這了,希望我們推薦的答案對大家有所幫助,