如何从后台线程连接PyQt槽到GUI线程

9 投票
1 回答
3752 浏览
提问于 2025-04-16 10:04

我想在后台线程中连接一个信号到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!!!!!!!!!

加上这个就能正常工作了。(已经测试过)

撰写回答