我在 UI 中有瀏覽按鈕,單擊它會觸發(fā)打開文件對話框。我的問題是打開文件對話框甚至在單擊瀏覽按鈕之前就已觸發(fā)。下面是我的代碼class GisedifySupportDialog(QtWidgets.QDialog, FORM_CLASS):def __init__(self, parent=None): """Constructor.""" super(GisedifySupportDialog, self).__init__(parent) self.setupUi(self) self.img_upload=Upload_Image() self.img_upload.setupUi(self.upload_image_dialog) self.img_upload.pushButton.clicked.connect(self.browseTheFileAudio(self.img_upload.lineEdit))def browseTheFileAudio(self,lineedit_name): self.fileName = QtWidgets.QFileDialog.getOpenFileName(self, "Browse for the file", os.getenv("HOME")) self.fileName=self.fileName lineedit_name.setText(str(self.fileName)) return self.fileName為什么 briwseTheFileAudio 函數(shù)在單擊按鈕之前就觸發(fā)了?
1 回答

互換的青春
TA貢獻(xiàn)1797條經(jīng)驗 獲得超6個贊
當(dāng)你說:
self.img_upload.pushButton.clicked.connect(self.browseTheFileAudio(self.img_upload.lineEdit))
您正在調(diào)用函數(shù)browseTheFileAudio
,并且該函數(shù)的返回值被傳遞給pushButton.clicked.connect
。那不是你想要的。您希望將函數(shù)對象(而不實際調(diào)用它)傳遞給pushButton.clicked.connect
,您只想在單擊按鈕時觸發(fā)它。這就是您綁定回調(diào)的方式。
鑒于您的回調(diào)還需要一個參數(shù),您可以使用 lambda:
self.img_upload.pushButton.clicked.connect(lambda le=self.img_upload.lineEdit: self.browseTheFileAudio(le))
添加回答
舉報
0/150
提交
取消