1. 程式人生 > 其它 >PyQt5 訊號與槽機制

PyQt5 訊號與槽機制

說明: 為訊號連線槽函式, 在訊號激發時實現對槽函式的呼叫. 作用: 一個訊號可以繫結多個槽函式, 實現一對多的激發效果. 訊號也可以連線其他的訊號. 跨執行緒時, 必須使用訊號進行引數傳遞.

from PyQt5.QtCore import QObject, pyqtSignal, pyqtSlot
class TestSignal(QObject):
    # 訊號必須定義為類的屬性
    # 引數型別 int str list dict 
    signal = pyqtSignal(int, str)
    def __init__(self):
        super().__init__()

def show1(v1, v2):
    print(v1, v2)

def show2(v1, v2):
    print(v2, v1)

if __name__ == '__main__':
    test = TestSignal()
    # 連線槽函式
    test.signal.connect(show1)
    test.signal.connect(show2)
    # 激發訊號
    test.signal.emit(0,'a')
    # 斷開連線
    test.signal.disconnect(show2)
    test.signal.emit(1,'b')
    # 斷開全部連線
    test.signal.disconnect()
    test.signal.emit(2,'c')

槽裝飾器 非必要, 目的是將Python方法顯式標記為Qt槽,併為其指定C++簽名 意義未明確

@PyQt5.QtCore.pyqtSlot(引數型別)
def function(value):
    pass