为了账号安全,请及时绑定邮箱和手机立即绑定

在pyqt5中单击按钮之前浏览按钮方法触发

在pyqt5中单击按钮之前浏览按钮方法触发

萧十郎 2022-12-06 15:33:47
我在 UI 中有浏览按钮,单击它会触发打开文件对话框。我的问题是打开文件对话框甚至在单击浏览按钮之前就已触发。下面是我的代码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 函数在单击按钮之前就触发了?
查看完整描述

1 回答

?
互换的青春

TA贡献1797条经验 获得超6个赞

当你说:

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))



查看完整回答
反对 回复 2022-12-06
  • 1 回答
  • 0 关注
  • 115 浏览
慕课专栏
更多

添加回答

举报

0/150
提交
取消
微信客服

购课补贴
联系客服咨询优惠详情

帮助反馈 APP下载

慕课网APP
您的移动学习伙伴

公众号

扫描二维码
关注慕课网微信公众号