栏目分类:
子分类:
返回
名师互学网用户登录
快速导航关闭
当前搜索
当前分类
子分类
实用工具
热门搜索
名师互学网 > IT > 软件开发 > 后端开发 > Python

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

Python 更新时间: 发布时间: IT归档 最新发布 模块sitemap 名妆网 法律咨询 聚返吧 英语巴士网 伯小乐 网商动力

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
转载请注明:文章转载自 www.mshxw.com
本文地址:https://www.mshxw.com/it/665434.html
我们一直用心在做
关于我们 文章归档 网站地图 联系我们

版权所有 (c)2021-2022 MSHXW.COM

ICP备案号:晋ICP备2021003244-6号