如何从后台线程连接PyQt槽到GUI线程
我想在后台线程中连接一个信号到GUI线程中的一个槽,这样做要符合Python的风格。
我有以下这段代码。
from PyQt4.QtCore import *
class CompanyPresenter(QObject):
fieldChangeSignal = pyqtSignal(str, str)
def __init__(self,model,view):
self.model = model # a CompanyModel
self.view = view # a CompanyView
self.fieldChangeSignal.connect(view.setField)
但是在连接的那一行,我遇到了这个错误:
TypeError: pyqtSignal必须绑定到一个QObject,而不是'CompanyPresenter'
但是CompanyPresenter是从QObject继承的,所以它应该是一个QObject。到底发生了什么呢?
(我想让Presenter和GUI最终在不同的线程中运行,但我还没有做到这一点。目前还没有涉及线程的内容。)
1 个回答
23
你忘记这个了:
def __init__(self,model,view):
super(CompanyPresenter, self).__init__() # this!!!!!!!!!
加上这个就能正常工作了。(已经测试过)