[英]QObject, pyqtSignal in PyQt5
看代码:
from PyQt5.QtCore import QObject, pyqtSignal
class QtSignal(QObject):
signal = pyqtSignal()
# Case 1:
signal = pyqtSignal()
print(type(signal))
# Case 2:
qtSignal = QtSignal()
print(type(qtSignal.signal))
对于case 1
,它输出<class 'PyQt5.QtCore.pyqtSignal'>
,但对于case 2
,它输出<class 'PyQt5.QtCore.pyqtBoundSignal'>
。
两种情况之间的区别在于,是否在QObject
的子类中定义qtSignal
。 但是,如果在QObject
的子类中定义了pyqtBoundSignal
,为什么会pyqtSignal
变成pyqtBoundSignal
?
pyqtSignal遵循所谓的描述符协议。 这是最著名的用于属性装饰器,但是您可以找到许多其他用途。
这样的结果是,访问属性允许它获取对您通过其调用的对象的引用。 因此,您的情况就是QtSignal的实例。 结果是绑定信号。 这与klasses的方法相同!
这是必需的,因为当您发射信号时,您确实需要一个发送器。 这就是pyqt了解谁的方法。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.