Python 将数据写入QTextEdit时,关闭窗口时,显示错误
在计时器事件中将数据写入QTextEdit时,我正在编写pyqt5演示,当关闭窗口时,它显示错误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()._
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如果我的答案帮你别忘了标记为正确,如果你不知道怎么做,那就检查一下