使用 Python3 和 PyQt4,我有一个函数 ( run ),它将一个可调用对象作为输入来提供状态更新。
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()
这工作正常(即文本更新正确显示在小部件中)。但是,当我用 QTextEdit 替换QLineEdit并使用append方法添加文本时,我得到:
QObject::connect: 不能将“QTextCursor”类型的参数排队
(确保使用 qRegisterMetaType() 注册了“QTextCursor”。)
它仍然有效,但指出我做错了什么,我不确定当更多线程处于活动状态时我会继续工作。通常,我使用信号和插槽进行此类更新,但运行函数不是 PyQt 特定的。问题是:
- 为什么它在没有警告 QLineEdit 而不是 QTextEdit 的情况下工作?
- 处理这种情况的正确方法是什么?