PyQt5中的QObject,pyqtSignal

时间:2018-05-06 08:46:35

标签: python 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'>

两种情况之间的区别在于是否在qtSignal的子类中定义QObject。但是pyqtSignal如果在pyqtBoundSignal的子类中定义QObject,那么为什么会endpointsServer project(path: ':backend', configuration: 'endpoints')

1 个答案:

答案 0 :(得分:0)

pyqtSignal遵循所谓的描述符协议。这是最着名的在属性装饰器中使用,但你发现了很多其他用途。

这样做的结果是访问属性允许它获取对您调用它的对象的引用。所以在你的情况下,QtSignal的实例。结果是绑定信号。对于类的方法,这是同样的顺便说一句!

这是必需的,因为当你发出信号时,你需要一个发送者。这就是pyqt学习是谁的方式。