在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)错误。
答案 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
Segmentation fault
/ core dump
。