Python 将数据写入QTextEdit时,关闭窗口时,显示错误

Python 将数据写入QTextEdit时,关闭窗口时,显示错误,python,pyqt,pyqt5,qtextedit,Python,Pyqt,Pyqt5,Qtextedit,在计时器事件中将数据写入QTextEdit时,我正在编写pyqt5演示,当关闭窗口时,它显示错误 from PyQt5.QtSerialPort import * from PyQt5.QtWidgets import * from PyQt5.QtCore import * from PyQt5.QtGui import * import sys class MainWindow(QMainWindow): def __init__(self): super()._

在计时器事件中将数据写入QTextEdit时,我正在编写pyqt5演示,当关闭窗口时,它显示错误

from PyQt5.QtSerialPort import *
from PyQt5.QtWidgets import *
from PyQt5.QtCore import *
from PyQt5.QtGui import *
import sys


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()

        self.msgTE = QTextEdit()
        self.msgTE.setReadOnly(True)


        layout = QGridLayout()
        layout.addWidget(self.msgTE, 0, 0, 1, 2)


        widget = QWidget()
        widget.setLayout(layout)
        self.setCentralWidget(widget)

        self.startTimer(10)



    def timerEvent(self, *event):
        QApplication.processEvents()
        self.msgTE.insertPlainText('12')


    def closeEvent(self, *args, **kwargs):
        self.killTimer()


app = QApplication(sys.argv)
demo = MainWindow()
demo.show()
app.exec()

**输出:进程结束,退出代码为-1073740791 0xC0000409**

我建议在终端/CMD中执行脚本,因为许多IDE不处理Qt异常,如果这样做,则应获得以下信息:

Traceback (most recent call last):
  File "main.py", line 34, in closeEvent
    self.killTimer()
TypeError: killTimer(self, int): not enough arguments
这告诉我们,它需要一个参数,在本例中,它是与计时器关联的id,因为您可以启动多个计时器,而您只想停止一个,该id将由方法返回

考虑到上述情况,解决方案是:

从PyQt5导入QtWidgets 类MainWindowQtWidgets.QMainWindow: 定义初始自我: 超级__ self.msgTE=QtWidgets.QTextEditreadOnly=True widget=qtwidts.QWidget 布局=QtWidgets.QGridLayoutwidget layout.addWidgetself.msgTE,0,0 self.setCentralWidgetwidget self.m_timer_id=self.startTimer10 def timerEventself,事件: 如果event.timerId==self.m_timer_id: self.msgTE.insertPlainText12 super.timerEventevent def closeEventself,事件: self.killTimerself.m_timer_id super.closeEventevent 如果uuuu name uuuuu==\uuuuuuuu main\uuuuuuuu: 导入系统 app=qtwidts.QApplicationsys.argv 演示=主窗口 演示 sys.exitapp.exec
看我试试你的方法,它工作得很好,IDE没有捕获pyqt异常。@jiechen如果我的答案帮你别忘了标记为正确,如果你不知道怎么做,那就检查一下