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