首页 > 其他 > 详细

PyQt-QObject::connect: Cannot queue arguments...报错

时间:2020-12-05 09:27:52      阅读:38      评论:0      收藏:0      [点我收藏+]

【问题】

源码:

class Windows(QtGui.QWidget):
    # Creates a widget containing:
    # - a QLineEdit (status_widget)
    # - a button, connected to on_run_clicked

    def on_run_clicked(self):
        def update(text):
            self.widget.setText(text)

        threading.Thread(target=run, args=(update, )).start()


但是如果将 QLineEdit换成QTextEdit,并使用了append方法就会得到以下错误:

QObject::connect: Cannot queue arguments of type ‘QTextCursor‘

(Make sure ‘QTextCursor‘ is registered using qRegisterMetaType().)

 

【解决】

我们不能通过线程来修改UI,较为安全的修改用户界面的方式是向UI窗口发送信号(signal),较为简单的方式是使用 Qt threading

class MyThread(QtCore.QThread):
    updated = QtCore.pyqtSignal(str)

    def runself ):
        # 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 updateTextself, text ):
        self.widget.setText(text)

PyQt-QObject::connect: Cannot queue arguments...报错

原文:https://www.cnblogs.com/yeu4h3uh2/p/14088263.html

(0)
(0)
   
举报
评论 一句话评论(0
关于我们 - 联系我们 - 留言反馈 - 联系我们:wmxa8@hotmail.com
© 2014 bubuko.com 版权所有
打开技术之扣,分享程序人生!