QObject,pyqtSignal在PyQt5中

2024-04-26 07:39:27 发布

您现在位置:Python中文网/ 问答频道 /正文

参见代码:

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的子类中定义的?在


Tags: 代码signal定义type子类pyqt5classcase
1条回答
网友
1楼 · 发布于 2024-04-26 07:39:27

pyqtSignal遵循所谓的描述符协议。这是最著名的财产装饰使用,但你发现许多其他用途。在

这样做的结果是,访问一个属性可以让它获得对你调用它的对象的引用。在您的例子中,QtSignal的实例。结果是绑定信号。这是相同的btw的方法克拉斯!在

这是必要的,因为当你发出信号时,你确实需要一个发送器。这就是pyqt了解自己的方式。在

相关问题 更多 >