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