PyQt5最全81 信号与槽之为类添加多个参数可选的信号
from PyQt5.QtCore import *
class MultiSignal(QObject):
"""
为类添加多个信号
"""
signal1 = pyqtSignal()
signal2 = pyqtSignal(int)
signal3 = pyqtSignal(int, str)
signal4 = pyqtSignal(list)
signal5 = pyqtSignal(dict)
signal6 = pyqtSignal([int, str], [str])
def __init__(self):
super(MultiSignal, self).__init__()
self.signal1.connect(self.signalCall1)
self.signal2.connect(self.signalCall2)
self.signal3.connect(self.signalCall3)
self.signal4.connect(self.signalCall4)
self.signal5.connect(self.signalCall5)
self.signal6[str].connect(self.signalCall6Overload)
self.signal6[int, str].connect(self.signalCall6)
self.signal1.emit()
self.signal2.emit(1)
self.signal3.emit(1, 'Hello, world')
self.signal4.emit([1, 2, 3, 4, 5, 6])
self.signal5.emit({'name': 'niuniu', 'age': 'guess'})
self.signal6[str].emit('test')
self.signal6[int, str].emit(100, 'test')
def signalCall1(self):
print('signal1 emit')
def signalCall2(self, val):
print('signal1 emit, value: ', val)
def signalCall3(self, val, text):
print('signal3 emit, value: ', val, text)
def signalCall4(self, val):
print('signal4 emit, value: ', val)
def signalCall5(self, val):
print('signal5 emit, value: ', val)
def signalCall6(self, val, text):
print('signal6 emit, value: ', val, text)
def signalCall6Overload(self, val):
print('signal6 overload emit, value: ', val)
if __name__ == '__main__':
multiSignal = MultiSignal()
结果
signal1 emit
signal1 emit, value: 1
signal3 emit, value: 1 Hello, world
signal4 emit, value: [1, 2, 3, 4, 5, 6]
signal5 emit, value: {'name': 'niuniu', 'age': 'guess'}
signal6 overload emit, value: test
signal6 emit, value: 100 test