相关疑难解决方法(0)

PyQt:退出时没有错误消息(追溯)

我的PyQt应用程序不再将错误(stderr?)打印到控制台.

我使用QtDesigner并导入这样的UI:

from PyQt5 import QtCore, QtGui, QtWidgets
import sys
from PyQt5.uic import loadUiType
Ui_MainWindow, QMainWindow = loadUiType("test.ui")

class Main(QMainWindow, Ui_MainWindow):
    """Main window"""
    def __init__(self,parent=None):
        super(Main, self).__init__(parent)
        self.setupUi(self)
        self.pushButton.clicked.connect(self.testfunc)

   def testfunc(self):
        print(9/0)

if __name__ == '__main__':
    app = QtWidgets.QApplication(sys.argv)
    main = Main()
    main.show()
    sys.exit(app.exec_())
Run Code Online (Sandbox Code Playgroud)

test.ui包含QPushButton和标签.当我在非Qt应用程序中调用testfunc(显然会出现错误)时,我会收到错误消息,回溯等.当我执行此代码时,它只是退出.

之前我没有使用QtDesigner写了一个PyQt应用程序,它按预期将错误打印到控制台.与QtDesigner和继承有什么区别?

python pyqt qt-designer pycharm pyqt5

13
推荐指数
1
解决办法
7257
查看次数

PyQt5中未处理的异常

看看下面的MWE。

import sys

from PyQt5.QtWidgets import QMainWindow, QPushButton, QApplication

class MainWindow(QMainWindow):
    def __init__(self, parent=None):
        super().__init__(parent)
        self.button = QPushButton('Bham!')
        self.setCentralWidget(self.button)
        self.button.clicked.connect(self.btnClicked)

    def btnClicked(self):
        print(sys.excepthook)
        raise Exception


#import traceback
#sys.excepthook = traceback.print_exception

if __name__ == '__main__':
    app = QApplication(sys.argv)
    mainWindow = MainWindow()
    mainWindow.show()
    app.exec_() 
Run Code Online (Sandbox Code Playgroud)

我有很多问题。我不知道它们是否都相关(我想是的),如果它们不相关,请原谅我。

  1. 当我从终端运行以上代码时,一切都很好。该程序运行,如果我单击按钮,它将打印回溯并消失。如果我在IDE(我测试过Spyder和PyCharm)中运行它,则不会显示回溯。知道为什么吗?从本质上讲,在此处此处的其他帖子中也提出了相同的问题。请不要将此标记为其中任何一个的重复;请继续阅读。

  2. 通过添加注释行,可以再次正确显示回溯。但是,它们还具有讨厌的副作用,即该应用程序不会再因未处理的异常而终止!我不知道为什么会这样,因为AFAIK excepthook打印回溯,它不能阻止程序退出。目前,救援已经为时已晚。

  3. 另外,我不了解Qt在这里如何发挥作用,因为未在插槽内引发的异常仍会像我期望的那样使应用程序崩溃。无论我是否进行更改excepthook,PyQt似乎都不会覆盖它(至少print似乎暗示了这一点)。

仅供参考,我正在将Python 3.5与PyQt 5.6配合使用,并且我知道PyQt 5.5中引入的异常处理方面的变化。如果确实是上述行为的原因,我很高兴听到一些更详细的解释。

python ide qt unhandled-exception pyqt5

5
推荐指数
1
解决办法
1346
查看次数

标签 统计

pyqt5 ×2

python ×2

ide ×1

pycharm ×1

pyqt ×1

qt ×1

qt-designer ×1

unhandled-exception ×1