在pyqt5中点击按钮前浏览按钮的方法[重复]。

问题描述 投票:0回答:1

我在用户界面上有一个浏览按钮,点击后应该会触发打开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功能在按钮被点击之前就已经被触发?

python python-3.x pyqt pyqt5
1个回答
1
投票

当你说。

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))
© www.soinside.com 2019 - 2024. All rights reserved.