在Qt中,控件中的clicked()信号和clicked(bool)信号是两个不同的信号,映射槽函数时,clicked()信号映射到的槽函数是不带参的,clicked(bool)信号映射到的槽函数是带参数的。

经验证测试,如果把一个控件的clicked()信号和clicked(bool)信号映射到名字相同但参数不同的槽函数会导致二者最终会执行同一个槽函数,具体执行哪个槽函数由代码中槽函数的定义顺序决定,执行的是后定义的槽函数。

我们来验证一下,在一个PushButtong上分别定义这两个信号与槽函数的连接,它们连接到同名的槽函数clickButton,如图:



槽函数定义代码如下:

python
def clickButtonNoPar(self):
pButton = self.sender()
print(f"clickButtonNoPar was called!") def clickButton(self,status):
pButton = self.sender()
print(f"clickButton was called,status={status}")

在PyCharm执行情况如下:



上图中,蓝笔圈的部分是槽函数的定义代码,黄色荧光笔标记时执行的输出,可以看到,按钮的clicked()信号和clicked(bool)信号映射到同名(clickButton)但参数不同的槽函数会导致二者最终会执行同一个槽函数clickButton(self,status)。如果把上述槽函数的定义代码顺序倒换一下,就会执行槽函数clickButton(self)。

当然,如果二者映射到不同槽函数,这个问题就不会存在。

之所以出现这个问题,老猿认为是PyQt内部槽函数映射机制存在缺陷导致的。


博客地址:https://blog.csdn.net/LaoYuanPython

老猿Python博客文章目录:https://blog.csdn.net/LaoYuanPython/article/details/98245036

PyQt(Python+Qt)学习随笔:clicked和clicked(bool)信号连接同名函数出现的问题的更多相关文章

  1. PyQt(Python+Qt)学习随笔:Designer中QDialogButtonBox确认clicked信号是哪个按钮发送的方法

    一.引言 QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpRequested,在<PyQt(Python+Qt)学习随笔:D ...

  2. PyQt(Python+Qt)学习随笔:Designer中的QDialogButtonBox的clicked信号参数QAbstractButton *解决办法

    一.引言 QDialogButtonBox本身只提供4种信号,分别是accepted.rejected.clicked和helpRequested,在<PyQt(Python+Qt)学习随笔:D ...

  3. PyQt(Python+Qt)学习随笔:利用QWidget部件的palette以及ColorGroup、colorRole局部调整部件的特定范围颜色

    专栏:Python基础教程目录 专栏:使用PyQt开发图形界面Python应用 专栏:PyQt入门学习 老猿Python博文目录 在<PyQt(Python+Qt)学习随笔:QWidget部件的 ...

  4. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性不能覆盖写的问题

    老猿Python博文目录 专栏:使用PyQt开发图形界面Python应用 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dra ...

  5. PyQt(Python+Qt)学习随笔:视图中类QAbstractItemView的dragDropOverwriteMode属性

    老猿Python博文目录 老猿Python博客地址 一.属性的作用 dragDropOverwriteMode属性用于控制视图的拖放行为,如果其值为True,则视图中选定的数据将在拖拽数据放下时被覆盖 ...

  6. PyQt(Python+Qt)学习随笔:视图中的dragDropMode属性对dragEnabled和acceptDrops属性的影响

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系&g ...

  7. PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled和dragDropMode属性的关系

    老猿Python博文目录 老猿Python博客地址 在<PyQt(Python+Qt)学习随笔:QAbstractItemView的dragEnabled属性的困惑>中,老猿觉得dragE ...

  8. PyQt(Python+Qt)学习随笔:视图中的拖放操作注意事项

    老猿Python博文目录 老猿Python博客地址 在通过PyQt构建的图形界面中进行拖放,要成功进行拖放需要注意: 视图相关属性需要支持拖放,具体相关属性请参考<PyQt(Python+Qt) ...

  9. PyQt(Python+Qt)学习随笔:Qt Designer中部件的autoFillBackground属性

    autoFillBackground属性可以确认部件背景是否自动填充,如果自动填充,Qt会在调用Paint事件之前填充部件的背景.使用的颜色由部件调色板中的QPalette.window 角色定义(关 ...

  10. PyQt(Python+Qt)学习随笔:Qt Designer中部件的accessibleDescription和accessibleName辅助阅读属性

    accessibleDescription和accessibleName属性都是用于残疾人辅助阅读的,这两个属性都有国际化属性(关于国际化请参考<PyQt(Python+Qt)学习随笔:Qt D ...

随机推荐

  1. Pandas_VBA_数据分类比较

    Python与VBA的比较2 需求: input文件中有两列数据,第一列为Name,第二列为Score,Name列里有重复的值,要求按照name的唯一值统计 score,输出到output文件按中. ...

  2. Docker - 解决重新进入容器后,环境变量失效的问题

    问题背景 在容器中,在 /etc/profile . /etc/environment 设置了环境变量 退出容器,重新进入容器 刚刚设置的环境变量失效了 解决办法 将环境变量设置在 /root/.ba ...

  3. 5. Spark调优

    *以下内容由<Spark快速大数据分析>整理所得. 读书笔记的第五部分是讲的是Spark调优相关的知识点. 一.并行度调优 二.序列化格式优化 三.内存管理优化 四.Spark SQL性能 ...

  4. python3中的os.path模块

    os.path模块主要用于获取文件的属性,这里对该模块中一些常用的函数做些记录. os.abspath(path):获取文件的绝对路径.这里path指的是路径,例如我这里输入"data.cs ...

  5. 8.java设计模式之装饰者模式

    基本需求: 咖啡的种类有很多种,调料也有很多种,下单时,可以点单品咖啡也可以点单品咖啡+调料的组合,并计算下单时花费的金额 传统方式: 方式一 创建一个抽象类Drink,让所有的单品咖啡和组合咖啡都继 ...

  6. Ceph根据Crush位置读取数据

    前言 在ceph研发群里面看到一个cepher在问关于怎么读取ceph的副本的问题,这个功能应该在2012年的时候,我们公司的研发就修改了代码去实现这个功能,只是当时的硬件条件所限,以及本身的稳定性问 ...

  7. mybatis 多数据源动态切换

    笔者主要从事c#开发,近期因为项目需要,搭建了一套spring-cloud微服务框架,集成了eureka服务注册中心. gateway网关过滤.admin服务监控.auth授权体系验证,集成了redi ...

  8. 【进阶之路】Mybatis-Plus中乐观锁@version注解的问题与解决方案

    大家好,我是练习java两年半时间的南橘,从一名连java有几种数据结构都不懂超级小白,到现在懂了一点点的进阶小白,学到了不少的东西.知识越分享越值钱,我这段时间总结(包括从别的大佬那边学习,引用)了 ...

  9. [PHP安全特性学习]strcmp()函数安全漏洞

    简介 PHP函数的安全特性-strcmp() 函数 php-strcmp()函数 PHP strcmp() 函数 strcmp() 函数比较两个字符串. 注释:strcmp() 函数是二进制安全的,且 ...

  10. mybatis使用细节注意

    mybatis细节 增删改查ParameterType都可以不用写 解释这个属性是可选的,因为 MyBatis 可以通过类型处理器(TypeHandler)推断出具体传入语句的参数 mybatis 中 ...