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