对我来说,运行此代码作为一种健全性检查会很有帮助。
Python 3.3.1 (default, Apr 17 2013, 22:30:32)
[GCC 4.7.3] on linux
Type "help", "copyright", "credits" or "license" for more information.
>>>from PyQt5.QtCore import pyqtSignal
>>>for i in dir(pyqtSignal):
... if i == 'emit':
... print(True)
...
>>>
其他人是真的吗?请注意,从PyQt4导入QObject:
>>> from PyQt4.QtCore import QObject
>>> for i in dir(QObject):
... if i == 'emit':
... print(True)
...
True
答案 0 :(得分:2)
pyqtSignal
不是信号,它是用于创建信号的工厂函数,因此它当然没有emit
属性。它只返回一个descriptor,当绑定到QObject实例时将返回实际的信号对象。这意味着只有绑定信号才会有emit
方法。
在pyqt中引入新样式信号之前,QObject.emit
方法是一个遗留物,现在是has been removed。只需在绑定信号上使用emit
方法发出它:
class SomeObject(QObject):
someSignal = pyqtSignal(...)
instance = SomeObject()
instance.someSignal.emit(value)