# @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()