02-自定義信號傳遞多個參數 | PyQT5


# @Project :DEMO
# @File    :02-自定義信號傳遞多個參數.py
# @Author  :miaokela
# @Date    :2021/7/25 7:41 下午
from PyQt5.QtCore import *


class MultiSignal(QObject):
    """
    信號發送多個參數給槽函數
    """

    signal_01 = pyqtSignal()
    signal_02 = pyqtSignal(int)
    signal_03 = pyqtSignal(int, str)
    signal_04 = pyqtSignal(list)
    signal_05 = pyqtSignal(dict)

    # 類似重載的概念,逗號隔開選項,可以傳左側的兩個參數,或者,右側的一個參數,數據類型固定
    signal_06 = pyqtSignal([int, str], [str])

    def __init__(self):
        super(MultiSignal, self).__init__()

        # 信號關聯槽
        self.signal_01.connect(self.signal_01_call)
        self.signal_02.connect(self.signal_02_call)
        self.signal_03.connect(self.signal_03_call)
        self.signal_04.connect(self.signal_04_call)
        self.signal_05.connect(self.signal_05_call)
        self.signal_06[int, str].connect(self.signal_06_call)  # 不指定中括號,默認使用信號參數集的第一個
        self.signal_06[str].connect(self.signal_07_call)

        # 發送信號
        self.signal_01.emit()
        # self.signal_02.emit(10)

        self.signal_03.emit(10, '10')
        self.signal_04.emit([10])
        self.signal_05.emit({'name': 'mic'})
        self.signal_06[int, str].emit(10, '10')
        self.signal_06[str].emit('10')

    def signal_01_call(self):
        print('signal_01 發出信號')

    def signal_02_call(self, val):
        print('signal_02 發出信號', val)

    def signal_03_call(self, val, txt):
        print('signal_03 發出信號', val, txt)

    def signal_04_call(self, val):
        print('signal_04 發出信號', val)

    def signal_05_call(self, val):
        print('signal_05 發出信號', val)

    def signal_06_call(self, val):
        print('signal_06 發出信號', val)

    def signal_07_call(self, val, txt):
        print('signal_07 發出信號', val, txt)


if __name__ == '__main__':
    multi_signal = MultiSignal()

  

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM