参见代码:
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'>
。
两种情况之间的区别在于是否在qtSignal
的子类中定义QObject
。但是pyqtSignal
如果在pyqtBoundSignal
的子类中定义QObject
,那么为什么会endpointsServer project(path: ':backend', configuration: 'endpoints')
?
答案 0 :(得分:0)
pyqtSignal遵循所谓的描述符协议。这是最着名的在属性装饰器中使用,但你发现了很多其他用途。
这样做的结果是访问属性允许它获取对您调用它的对象的引用。所以在你的情况下,QtSignal的实例。结果是绑定信号。对于类的方法,这是同样的顺便说一句!
这是必需的,因为当你发出信号时,你需要一个发送者。这就是pyqt学习是谁的方式。