PyQt5 clicked和clicked[bool]信号区别

网友的解释(跟实践有冲突)

在使用命令按钮QPushButton时,最常用的信号列表如下:

关于“将当前状态传递给外界”这句作用难以理解,其实就是:控件中的clicked()信号和clicked(bool)信号是两个不同的信号

1、clicked()

映射槽函数时,clicked()信号映射到的槽函数是不带参的,比如槽函数可以写作def ClickedAction(self),与按钮动作连接的语句为self.btn.clicked.connect(self.ClickedAction);

2、clicked(bool)

clicked(bool)信号映射到的槽函数可以是带参数的,比如槽函数可以写作def ClickedAction(self,status),其中参数status就是按钮当前的状态(Tru or False),而与按钮动作连接的语句self.btn.clicked[bool].connect(self.ClickedAction),无需使用lambda传入status。
很显然,clicked(bool)只是当按钮的setCheckable()设置为True时才有可能使得status为True(即设置后按钮想点灯开关一样,能够按一下保持一直开,再按下保持一直关),否则开关点击一下后仍为关闭状态,status一直为False。clicked例子很简单,在此不说了,clicked[bool]相关情况下的实例如下:

(1)默认为setCheckable(False)的按钮

#按钮及其动作定义
self.btn=QPushButton('验证')
#self.btn.setCheckable(True)
self.btn.setFont(QFont('TypeLand 康熙字典體試用版',20))
self.btn.clicked.connect(self.ClickedAction)  #注意这里不用传入参数status,动作会自动获取status
 
 
#动作定义
def ClickedAction(self,status):
    print(f"按下按钮了,此后按钮状态为:{status}")

#结果
按下按钮了,此后按钮状态为:False

(2)setCheckable(True)的按钮

#按钮及其动作定义
self.btn=QPushButton('验证')
self.btn.setCheckable(True)
self.btn.setFont(QFont('TypeLand 康熙字典體試用版',20))
self.btn.clicked.connect(self.ClickedAction)  #注意这里不用传入参数status,动作会自动获取status
 
 
#动作定义
def ClickedAction(self,status):
    print(f"按下按钮了,此后按钮状态为:{status}")

# 结果
按下按钮了,此后按钮状态为:True

我的实验

上面说了一堆别人的见解,但是我实际操作发现。不管是clicked还是clicked[bool],槽函数如果带参都是可以的,而且都能获取到status的值的

其中statu在setCheckable(True)的时候,第一次点击的值为True,否则都是为False

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

独行侠_阿涛

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值