当我使用线程 QTextEdit 时处理
Handle When i Use Threading QTextEdit
代码:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit_3 = QtWidgets.QTextEdit()
self.textEdit_3.setGeometry(QtCore.QRect(390, 40, 451, 441))
self.textEdit_3.setReadOnly(True)
self.textEdit_3.setObjectName("textEdit_3")
font = QtGui.QFont()
font.setPointSize(13)
self.textEdit_3.setFont(font)
self.r()
self.setGeometry(600, 100, 1000, 900)
self.setWindowTitle('Scroll Area Demonstration')
self.show()
def r(self):
self.vaa = Thread(target=self.update1)
self.vaa.start()
def update1(self):
self.textEdit_3.insertPlainText('test')
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
错误:QObject::connect:无法对类型'QTextCursor'的参数进行排队
(确保使用 qRegisterMetaType() 注册 'QTextCursor'。)
您不能将文本直接从另一个线程添加到 QTextEdit(或另一个 GUI 元素),但您必须使用标记和其他线程安全的元素:
class MainWindow(QMainWindow):
<b>updateText = QtCore.pyqtSignal(str)</b>
def __init__(self):
super().__init__()
self.initUI()
<b>self.updateText.connect(self.textEdit_3.insertPlainText)</b>
# ...
def update1(self):
<b>self.updateText.emit("test")</b>
代码:
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.initUI()
def initUI(self):
self.textEdit_3 = QtWidgets.QTextEdit()
self.textEdit_3.setGeometry(QtCore.QRect(390, 40, 451, 441))
self.textEdit_3.setReadOnly(True)
self.textEdit_3.setObjectName("textEdit_3")
font = QtGui.QFont()
font.setPointSize(13)
self.textEdit_3.setFont(font)
self.r()
self.setGeometry(600, 100, 1000, 900)
self.setWindowTitle('Scroll Area Demonstration')
self.show()
def r(self):
self.vaa = Thread(target=self.update1)
self.vaa.start()
def update1(self):
self.textEdit_3.insertPlainText('test')
def main():
app = QtWidgets.QApplication(sys.argv)
main = MainWindow()
sys.exit(app.exec_())
if __name__ == '__main__':
main()
错误:QObject::connect:无法对类型'QTextCursor'的参数进行排队 (确保使用 qRegisterMetaType() 注册 'QTextCursor'。)
您不能将文本直接从另一个线程添加到 QTextEdit(或另一个 GUI 元素),但您必须使用标记和其他线程安全的元素:
class MainWindow(QMainWindow):
<b>updateText = QtCore.pyqtSignal(str)</b>
def __init__(self):
super().__init__()
self.initUI()
<b>self.updateText.connect(self.textEdit_3.insertPlainText)</b>
# ...
def update1(self):
<b>self.updateText.emit("test")</b>