QObject::connect: Cannot queue arguments of type 'QTextCursor'
程序员文章站
2022-05-11 08:11:45
...
使用PyQt5编写UI程序的时候,发现运行时会经常蹦出这句提示,经检查发现该错误出现程序写入QtextEidt组件时产生的信息。
经搜索后发现当使用QTextEdit,并使用了append方法就会出现该错误提示,原因是我们不能通过线程来修改UI,较为安全的修改用户界面的方式是向UI窗口发送信号(signal),较为简单的方式是使用 Qt threading类。
class MyThread(QtCore.QThread):
updated = QtCore.pyqtSignal(str)
def run( self ):
# do some functionality
for i in range(10000):
self.updated.emit(str(i))
class Windows(QtGui.QWidget):
def __init__( self, parent = None ):
super(Windows, self).__init__(parent)
self._thread = MyThread(self)
self._thread.updated.connect(self.updateText)
# create a line edit and a button
self._button.clicked.connect(self._thread.start)
def updateText( self, text ):
self.widget.setText(text)
相似问题中QT C++的解决办法:Link
如果不想看到该错误而且也不想通过信号和槽函数修改UI(工程较小,懒得做UI前后端分离),将PyQt5改为Pyside2,后者为QT公司的开源版本,限制相对于PyQt5更少,但是资料的不多,不过官方文档更详尽。
一般情况下,如果报错不是使用QTextEdit的append方法造成的,那么可以在connect
时,在槽函数之后添加参数Qt.DirectConnection
,详细解释见LINK
上一篇: 如何理解Oracle中“通过角色授权”需要用户重新登陆
下一篇: 大牛