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,就行.(关键:修改后就只执行一次了)
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)
这样也仅执行一次