问题与QTimer兑现python崩溃

时间:2015-08-01 11:32:24

标签: python qt

在QTimer回调中引发异常时,我遇到python崩溃的问题。下面是一个显示此

的小例子
import sys
from PyQt5.QtCore import (QTimer, pyqtSlot)
from PyQt5.QtWidgets import (QMainWindow, QApplication)

class MainWindow (QMainWindow):

    def __init__(self):
        QMainWindow.__init__(self)

        self.timer = QTimer(self)
        self.timer.timeout.connect(self.timer_call)
        self.timer.start(1000)

    @pyqtSlot()
    def timer_call(self):
        print ("Called")
        x={}
        x[2]

app = QApplication(sys.argv)
main = MainWindow()
main.show()

sys.exit(app.exec_())

运行时,显示以下内容:

调用 Traceback(最近一次调用最后一次):   文件" bin / gtscan.py",第21行,在timer_call中     X [2] KeyError:2 中止(核心倾销)

使用的软件版本(均来自Arch Linux版本):

Python 3.4.3 Qt版本:5.5.0 PyQt版本:5.5 SIP版本:4.16.9

任何人都可以帮忙吗 - 这不是KeyError我正在寻求帮助 - 这就是为什么这会导致python Aborted(core dumped)错误。

2 个答案:

答案 0 :(得分:2)

有人向我指出了这个原因:

PyQt开始,v5.5未处理的异常会导致对qFatal()的调用, 有关此问题的更多详情,请查看this link

答案 1 :(得分:1)

您的错误位于以下行

x={}    // this is empty dictionary
x[2]    // here you are trying to retrieve key 2's value

由于python无法检索key 2的值,因此它与KeyError

崩溃 当python尝试访问无法访问的内存时,会发生

Segmentation fault / core dump