点击一个pushButton时禁用另一个pushButton的实现方法(新手求助)
解决点击按钮时禁用另一个按钮的问题
你的代码逻辑有误,clicked.connect() 用于将按钮的点击信号绑定到槽函数,它的返回值是 None,所以你写的 if 判断永远不会成立,禁用按钮的代码根本不会执行。
下面是几种正确的实现方式:
方式一:在目标槽函数中添加禁用逻辑
把禁用按钮的代码放到你绑定的 idbox_test 函数里,这样按钮点击触发函数时,首先执行禁用操作:
def idbox_test(self): # 禁用pushButton_PTT self.pushButton_PTT.setEnabled(False) # 这里写原函数的业务逻辑 # ...
方式二:通过lambda同时执行禁用和原函数
如果不想修改 idbox_test 函数,可以用lambda表达式在绑定信号时,同时触发禁用操作和原函数:
self.pushButton_IDBOX.clicked.connect(lambda: [self.pushButton_PTT.setEnabled(False), self.sa_h.idbox_test()])
如果 idbox_test 需要接收参数,只需在lambda里传递对应参数即可。
方式三:执行完函数后恢复按钮状态(可选)
如果需要在函数执行完成后重新启用按钮,可以用try...finally保证无论函数是否报错,按钮都会恢复:
def idbox_test(self): self.pushButton_PTT.setEnabled(False) try: # 原函数的业务逻辑 # ... finally: # 恢复按钮可用状态 self.pushButton_PTT.setEnabled(True)
内容的提问来源于stack exchange,提问作者Lorenzo
相关产品推荐
相关产品推荐

