繁体   English   中英

PyQt5中的QObject,pyqtSignal

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM