【问题标题】:PyQt5 - Signal : pyqtSignal no method connectPyQt5 - 信号:pyqtSignal 没有方法连接
【发布时间】:2016-10-04 10:56:36
【问题描述】:

sourceforge 上找到的此文档中的以下示例 我遇到了一个错误。

from PyQt5.QtCore import pyqtSignal, pyqtSlot

 def setSignal():        
     signal = pyqtSignal()
     signal.connect(self.myAction)

 @QtCore.pyqtSlot()
 def myAction():
     print("signal triggered")

结果

AttributeError: 'PyQt5.QtCore.pyqtSignal' object has no attribute 'connect'

【问题讨论】:

    标签: python-3.x signals pyqt5


    【解决方案1】:

    如您链接的文档中所述,需要在类级别定义信号:

    class Foo(QObject):
    
        signal = pyqtSignal()
    
        def connectSignal():        
            self.signal.connect(self.myAction)
    
        @QtCore.pyqtSlot()
        def myAction():
            print("signal triggered")
    

    【讨论】:

    • 感谢您的回答。不幸地将信号定义为类成员(在 python3 中的 _init_ 函数中)不会改变任何东西,引发同样的错误。此外,由于错误消息中已知信号类型,我认为这不是问题
    • 但是你提到的定义信号确实有效。我认为这是类似的声明。其实不是,谢谢
    • 是的,必须在类级别定义它们,你不能在__init__ 中这样做。一个定义了一个类变量(就像一个方法一样),另一个定义了一个实例变量。信号需要是类变量。
    猜你喜欢
    • 2017-10-09
    • 1970-01-01
    • 2016-12-11
    • 1970-01-01
    • 2012-08-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多