簡體   English   中英

PyQt5中的QObject,pyqtSignal

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

 
粵ICP備18138465號  © 2020-2024 STACKOOM.COM