如何将 PyQt 插槽从后台线程连接到 gui 线程

发布于 2024-10-12 04:42:27 字数 595 浏览 1 评论 0原文

我希望以 pythonic 方式将后台线程中的信号连接到 GUI 线程中的插槽。

我有以下代码片段。

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 最终在不同的线程中运行,但我还没有做到这一点。还没有线程)。

I wish to connect up a signal in the background thread to a slot in the GUI thread in a pythonic way.

I have the following code snippet.

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)

I get this error (on the connect line)

TypeError: pyqtSignal must be bound to a QObject, not 'CompanyPresenter'

But CompanyPresenter inherits from QObject so it is a QObject. What is happening?

(I want the Presenter and GUI to run in different threads eventually, but I have not got that far yet. There is no threading yet).

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

痴情换悲伤 2024-10-19 04:42:28

你忘记了这个:

def __init__(self,model,view):
    super(CompanyPresenter, self).__init__() # this!!!!!!!!!

添加这个就可以了。(已测试)

you forgot this:

def __init__(self,model,view):
    super(CompanyPresenter, self).__init__() # this!!!!!!!!!

add this will work.(tested)

~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文