我在用户界面上有一个浏览按钮,点击后应该会触发打开filesialog。我的问题是,在浏览按钮被点击之前,打开fileialog就已经触发了。以下是我的代码
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功能在按钮被点击之前就已经被触发?
当你说。
self.img_upload.pushButton.clicked.connect(self.browseTheFileAudio(self.img_upload.lineEdit))
你是在调用函数 browseTheFileAudio
,并将该函数的返回值传递给 pushButton.clicked.connect
. 这不是你想要的。你想把函数对象--不实际调用它--传递给 pushButton.clicked.connect
你希望只有当按钮被点击时才会触发。这就是你如何绑定一个回调。
鉴于你的回调也需要一个参数,你可以使用lambda。
self.img_upload.pushButton.clicked.connect(lambda le=self.img_upload.lineEdit: self.browseTheFileAudio(le))