前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >PyQt5编程扩展 3.1 自定义信号

PyQt5编程扩展 3.1 自定义信号

作者头像
会洗碗的CV工程师
发布2023-02-10 14:55:28
3870
发布2023-02-10 14:55:28
举报
文章被收录于专栏:LongJava学习资料LongJava学习资料

自定义信号

使用PyQt5.QtCore.pyqtSignal() 信号需要定义为类属性,这样定义的信号是未绑定信号 当创建类的实例后,PyQt5会自动将类的实例与信号绑定,生成了绑定的信号 一个绑定的信号具有connect()、disconnect()和emit()三个函数 connect():关联槽函数 disconnect():断开与槽函数的关联 emit():发射信号

创建项目目录

e:\baikejia\bkj3-1

新建Eric工程

![!](https://img-blog.csdnimg.cn/344fd548bf084b6abb62a432e4d9a8f0.png)

初始human.py文件

未加槽函数前的代码

新建文件human.py,输入如下代码

在这里插入图片描述
在这里插入图片描述

运行程序

在这里插入图片描述
在这里插入图片描述

代码解释

在这里插入图片描述
在这里插入图片描述

添加姓名相关信号和函数

增加import模块

在这里插入图片描述
在这里插入图片描述

定义信号

定义一个带str类型参数的信号,注意这个信号作为Human类的类属性

在这里插入图片描述
在这里插入图片描述

增加一个类Responsor,放函数

删除setName函数中的print语句,该语句的功能由Responsor类中的do_nameChanged代替 然后添加Responsor类

在这里插入图片描述
在这里插入图片描述

修改相应的测试代码

在这里插入图片描述
在这里插入图片描述

运行程序

在这里插入图片描述
在这里插入图片描述

发现什么都没有,这是因为没有发射信号导致的

在这里插入图片描述
在这里插入图片描述

输出解释

创建对象时虽然也发射信号,但还未建立关联,所以无响应 建立关联后,3个信号的槽函数都响应了 断开关联后,断开管理的槽函数无响应了

添加代码

在setName函数的最后添加发射信号的代码

在这里插入图片描述
在这里插入图片描述

运行程序

在这里插入图片描述
在这里插入图片描述

输出解释

可以看到,建立连接后,当变量self.__name发生变化时发射了nameChanged信号,并且传递了参数self.__name。

这个信号关联了下列槽函数

槽函数

的运行产生了以上的输出。 断开连接后,无法产生输出了

当前全部代码

在这里插入图片描述
在这里插入图片描述

添加年龄相关信号和函数

增加import模块

在这里插入图片描述
在这里插入图片描述

定义信号

这个信号是overload型信号,有两种参数,一种是int,另一种是str

在这里插入图片描述
在这里插入图片描述

修改setAge函数

在这里插入图片描述
在这里插入图片描述

添加槽函数

在这里插入图片描述
在这里插入图片描述

修改相应的测试代码

注意overload的信号如果都定义了槽函数,两个槽函数不能同名,连接时需要给信号加参数区分

运行程序

在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2023-02-06,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 自定义信号
  • 创建项目目录
  • 新建Eric工程
  • 初始human.py文件
    • 未加槽函数前的代码
      • 运行程序
        • 代码解释
        • 添加姓名相关信号和函数
          • 增加import模块
            • 定义信号
              • 增加一个类Responsor,放函数
                • 修改相应的测试代码
                  • 运行程序
                    • 输出解释
                      • 添加代码
                        • 运行程序
                          • 输出解释
                            • 当前全部代码
                            • 添加年龄相关信号和函数
                              • 增加import模块
                                • 定义信号
                                  • 修改setAge函数
                                    • 添加槽函数
                                      • 修改相应的测试代码
                                        • 运行程序
                                        领券
                                        问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档