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