使用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: Cannot queue arguments of type 'QTextCursor'
(Make sure 'QTextCursor' is registered using qRegisterMetaType().)
它仍然有效,但指出我做错了一些事情,我不确定当更多线程处于活动状态时我会继续工作。通常,我使用信号和插槽进行这种类型的更新,但是run函数不是PyQt特定的。问题是:
我不知道为什么一个类工作而另一个不工作——我也不知道使用Python线程和Qt线程之间的区别……但是,如果设置不当,我可以告诉您,它是非常临时的。也就是说,您不能(或者至少不应该)从线程修改GUI对象。同样,不确定python和Qt线程在这方面的区别。但是,从GUI修改界面的安全方法是向窗口发送信号……我知道最简单的方法是通过Qt线程。
相关问题 更多 >
编程相关推荐