PyQt5在哪个模块中发现了emit方法?

时间:2013-07-10 21:48:45

标签: pyqt qt-signals pyqt5

对我来说,运行此代码作为一种健全性检查会很有帮助。

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

1 个答案:

答案 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)