PyQt UI 信号槽函数重复执行问题

本文介绍了在PyQt环境中,两种连接信号与槽函数的方法:使用`connect`函数和使用装饰器`@pyqtSlot()`.通过修正槽函数命名和去除装饰器,可以避免槽函数被意外多次执行。
摘要由CSDN通过智能技术生成

PyQt环境下,信号connect槽函数的方法有两种:

(1)使用connect()

示例代码:对话框SelectingDlg,上设置了一个pushbutton控件

class SelectingDlg(Ui_SelectingDlg,QDialog):
    def __init__(self,fieldlist:list):
        super(SelectingDlg,self).__init__()    
        self.setupUi(self)  
        self.buttonBox.setEnabled(False)      
        self.pushButton.clicked.connect(self.on_pushButton_clicked)

槽函数的有瑕疵代码:

 @QtCore.pyqtSlot()   
    def on_pushButton_clicked(self):
       self.buttonBox.setEnabled(True)       

上述槽函数会执行多次,一般是重复两次
1)修改槽函数的命名方式,不能用:on_pushButton_clicked(这是装饰器函数名的固定格式),比如修改成:onpushButtonclicked,就行.这样修改后就只执行一次了
2)去掉多余的装饰器(去不去掉不关键)

(2)使用装饰器 @pyqtSlot()

如果使用装饰器,则:

class SelectingDlg(Ui_SelectingDlg,QDialog):
    def __init__(self,fieldlist:list):
        super(SelectingDlg,self).__init__()    
        self.setupUi(self)  
        self.buttonBox.setEnabled(False)      
        #self.pushButton.clicked.connect(self.on_pushButton_clicked)
 @QtCore.pyqtSlot()   
    def on_pushButton_clicked(self):
       self.buttonBox.setEnabled(True)       

这样也仅执行一次

  • 10
    点赞
  • 10
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值