PyQt5最全81 信号与槽之为类添加多个参数可选的信号

PyQt5最全81 信号与槽之为类添加多个参数可选的信号

from PyQt5.QtCore import *


class MultiSignal(QObject):
    """
    为类添加多个信号

    """
    signal1 = pyqtSignal()  # 无参数
    signal2 = pyqtSignal(int)
    signal3 = pyqtSignal(int, str)
    signal4 = pyqtSignal(list)
    signal5 = pyqtSignal(dict)

    # 声明一个重载版本的信号,也就是槽函数的参数可以是int和str类型,也可以是只有一个str类型的参数(别误会成正则表达式那种了[a-z])
    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.connect(self.signalCall6)    # 不指定的情况下,会默认关联到第一个[int, str]下
        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
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值