PyQt5最全82 信号与槽之多个信号与槽的连接与断开
from PyQt5.QtCore import *
class NSignalNSlot(QObject):
"""
N Signal N Slot
信号槽N对N的连接与断开
断开是disconnect
"""
signal1 = pyqtSignal()
signal2 = pyqtSignal(int)
signal3 = pyqtSignal()
def __init__(self):
super(NSignalNSlot, self).__init__()
self.signal1.connect(self.call1)
self.signal1.connect(self.call11)
self.signal2.connect(self.signal1)
self.signal3.connect(self.call1)
self.signal1.emit()
print('signal2绑定到signal1触发后')
self.signal2.emit(2)
print('signal3绑定到call1触发后')
self.signal3.emit()
self.signal1.disconnect(self.call1)
self.signal1.disconnect(self.call11)
self.signal2.disconnect(self.signal1)
print('重新绑定后...')
self.signal1.connect(self.call1)
self.signal2.connect(self.call2)
self.signal1.emit()
self.signal2.emit(100)
def call1(self):
print('call1 emit')
def call11(self):
print('call11 emit')
def call2(self, val):
print('call2 emit')
if __name__ == '__main__':
nsignalnslot = NSignalNSlot()
结果
call1 emit
call11 emit
signal2绑定到signal1触发后
call1 emit
call11 emit
signal3绑定到call1触发后
call1 emit
重新绑定后...
call1 emit
call2 emit