参见代码:
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
,它输出{
两种情况的区别在于是否在QObject
的子类中定义qtSignal
。但是为什么pyqtSignal
会变成{QObject
的子类中定义的?在
pyqtSignal遵循所谓的描述符协议。这是最著名的财产装饰使用,但你发现许多其他用途。在
这样做的结果是,访问一个属性可以让它获得对你调用它的对象的引用。在您的例子中,QtSignal的实例。结果是绑定信号。这是相同的btw的方法克拉斯!在
这是必要的,因为当你发出信号时,你确实需要一个发送器。这就是pyqt了解自己的方式。在
相关问题 更多 >
编程相关推荐