PyQt 文件浏览 - 设置默认选项?
PyQt file browsing - setting a default option?
我一直在尝试在我正在设计的 GUI 中实现一个文件浏览小部件。我正在使用 QFileDialog 模块,它工作得很好——我可以使用以下代码行浏览和保存文件:
filenames = QFileDialog.getOpenFileName()
我的小部件设置了一个 QLineEdit,我想显示所选文件的名称,还有一个 QPushButton,我想启动上面的代码行。但是,我想知道是否可以设置 "default" 选项。如果没有点击浏览按钮,我希望文件如下:
filenames = str(glob.glob('*.npy')[0])
这将被保存为有问题的文件名并显示在我的 LineEdit 中。我的问题来自尝试在 LineEdit 中显示不同的文件名,这取决于是否单击了浏览按钮。如果它被点击,我希望 LineEdit 显示用户选择的文件而不是默认选项。以下是我的重新翻译功能中适用的代码行:
def retranslateUi(self, ROIGUI):
self.lineEdit.setText(_translate("ROIGUI", self.fileSelect(False), None))
self.Browse.setText(_translate("ROIGUI", "Browse...", None))
self.Browse.clicked.connect(self.fileSelect(True))
其中link下面的函数。如您所见,这目前无法正常工作,因为在 LineEdit 中,tripped 始终为 False。很傻。
def fileSelect(self,tripped):
filenames = str(glob.glob('*.npy')[0])
if tripped==True:
filenames = QFileDialog.getOpenFileName()
self.lineEdit.setText(_translate("ROIGUI", filenames, None))
return filenames
我一直在尝试不同的方法来让它工作,但我尝试过的所有方法要么 (a) 在文件浏览后从不更新我的 LineEdit,要么 (b) 立即运行文件浏览而不使用默认选项。想法?我确定有一种方法可以做到这一点,但我只是没有看到。
提前谢谢你。
编辑添加
我想我已经解决了大部分问题 - 我的浏览按钮现在通过 buttonGroup 连接到一个整数,所以我的 fileSelect 看起来像这样:
def fileSelect(self):
signal = self.buttonGroup2.checkedId()
if signal==-1:
filenames = str(glob.glob('*.npy')[0])
elif signal==1:
filenames = QFileDialog.getOpenFileName()
if (filenames.isNull()):
filenames = str(glob.glob('*.npy')[0])
return filenames
我的 "retranslate" 浏览按钮和 lineEdit 看起来像这样:
self.lineEdit.setText(_translate("ROIGUI", str(self.fileSelect()), None))
self.Browse.clicked.connect(self.fileSelect)
我唯一的问题是更新 lineEdit 的文本;尽管在使用浏览选择文件后,正在使用的文件本身会更新,但文本本身不会更新。有帮助吗?
如果从 QFileDialog
文件名变量中选择了取消按钮,则文件名变量将为空 QString
因此,您可以:
filenames = QFileDialog.getOpenFileName()
if (filenames.isNull()):
self.lineEdit.setText(_translate("ROIGUI", filenames, None))
else:
# The alternative code. Set the default value here to the QLineEdit.
我一直在尝试在我正在设计的 GUI 中实现一个文件浏览小部件。我正在使用 QFileDialog 模块,它工作得很好——我可以使用以下代码行浏览和保存文件:
filenames = QFileDialog.getOpenFileName()
我的小部件设置了一个 QLineEdit,我想显示所选文件的名称,还有一个 QPushButton,我想启动上面的代码行。但是,我想知道是否可以设置 "default" 选项。如果没有点击浏览按钮,我希望文件如下:
filenames = str(glob.glob('*.npy')[0])
这将被保存为有问题的文件名并显示在我的 LineEdit 中。我的问题来自尝试在 LineEdit 中显示不同的文件名,这取决于是否单击了浏览按钮。如果它被点击,我希望 LineEdit 显示用户选择的文件而不是默认选项。以下是我的重新翻译功能中适用的代码行:
def retranslateUi(self, ROIGUI):
self.lineEdit.setText(_translate("ROIGUI", self.fileSelect(False), None))
self.Browse.setText(_translate("ROIGUI", "Browse...", None))
self.Browse.clicked.connect(self.fileSelect(True))
其中link下面的函数。如您所见,这目前无法正常工作,因为在 LineEdit 中,tripped 始终为 False。很傻。
def fileSelect(self,tripped):
filenames = str(glob.glob('*.npy')[0])
if tripped==True:
filenames = QFileDialog.getOpenFileName()
self.lineEdit.setText(_translate("ROIGUI", filenames, None))
return filenames
我一直在尝试不同的方法来让它工作,但我尝试过的所有方法要么 (a) 在文件浏览后从不更新我的 LineEdit,要么 (b) 立即运行文件浏览而不使用默认选项。想法?我确定有一种方法可以做到这一点,但我只是没有看到。
提前谢谢你。
编辑添加
我想我已经解决了大部分问题 - 我的浏览按钮现在通过 buttonGroup 连接到一个整数,所以我的 fileSelect 看起来像这样:
def fileSelect(self):
signal = self.buttonGroup2.checkedId()
if signal==-1:
filenames = str(glob.glob('*.npy')[0])
elif signal==1:
filenames = QFileDialog.getOpenFileName()
if (filenames.isNull()):
filenames = str(glob.glob('*.npy')[0])
return filenames
我的 "retranslate" 浏览按钮和 lineEdit 看起来像这样:
self.lineEdit.setText(_translate("ROIGUI", str(self.fileSelect()), None))
self.Browse.clicked.connect(self.fileSelect)
我唯一的问题是更新 lineEdit 的文本;尽管在使用浏览选择文件后,正在使用的文件本身会更新,但文本本身不会更新。有帮助吗?
如果从 QFileDialog
文件名变量中选择了取消按钮,则文件名变量将为空 QString
因此,您可以:
filenames = QFileDialog.getOpenFileName()
if (filenames.isNull()):
self.lineEdit.setText(_translate("ROIGUI", filenames, None))
else:
# The alternative code. Set the default value here to the QLineEdit.