本文介紹了在eclipse(Pydev)中的pyqt5代碼中遇到異常時(shí)缺少回溯的處理方法,對(duì)大家解決問(wèn)題具有一定的參考價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)吧!
問(wèn)題描述
這可能是對(duì)過(guò)去一年未回答的問(wèn)題的輕微重復(fù),但我希望我能提供更多信息,并看到它得到回答。
問(wèn)題是,一旦代碼進(jìn)入到PyQt5的循環(huán)中,任何崩潰都不會(huì)導(dǎo)致回溯顯示在控制臺(tái)或我所知道的任何其他地方,但是,如果相同的程序只是從命令行使用與eclipse使用的完全相同的命令運(yùn)行,回溯就會(huì)毫無(wú)問(wèn)題地顯示出來(lái)。
在單獨(dú)的計(jì)算機(jī)上全新安裝所有列出的組件后確認(rèn)了問(wèn)題。
構(gòu)建環(huán)境:
ECLIPSE NEON 4.6.3-64位Java
PYDEV 5.8
Python 3.6.1 64或32位版本
PyQt 5.8.2-通過(guò)PIP3安裝
這是一個(gè)演示該問(wèn)題的完整微程序,如果我從命令行運(yùn)行它并單擊按鈕,我會(huì)得到一個(gè)回溯,但如果該程序正在運(yùn)行,并從eclipse中按下按鈕,我就得不到一個(gè)回溯。
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_())
是否有人知道會(huì)導(dǎo)致此行為的任何已知問(wèn)題或配置選項(xiàng)?
推薦答案
它在互聯(lián)網(wǎng)上隨機(jī)瀏覽了很多次,但最終找到了解決該問(wèn)題所需的代碼,這里發(fā)布的代碼供有相同問(wèn)題的其他人參考。當(dāng)我最終找到它的時(shí)候很明顯。;)
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
希望這能幫助他人。
這篇關(guān)于在eclipse(Pydev)中的pyqt5代碼中遇到異常時(shí)缺少回溯的文章就介紹到這了,希望我們推薦的答案對(duì)大家有所幫助,