我一直在尝试在我设计的GUI中实现一个文件浏览小部件。我使用的是QFileDialog模块,它工作得很好,我可以用以下代码行浏览和保存文件:
filenames = QFileDialog.getOpenFileName()
我的小部件是用QLineEdit设置的,我想显示所选文件的名称,还有一个QPushButton,我想启动上面的代码行。不过,我想知道是否有办法设置“默认”选项。如果未单击“浏览”按钮,我希望文件如下所示:
^{pr2}$它将被保存为有问题的文件名并显示在我的LineEdit中。我的问题来自于试图在LineEdit中显示不同的文件名,这取决于是否单击了browse按钮。如果已单击,我希望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))
链接到以下函数。如您所见,这目前无法正常工作,因为在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
我的“重新传输”浏览按钮和lineEdit如下所示:
self.lineEdit.setText(_translate("ROIGUI", str(self.fileSelect()), None))
self.Browse.clicked.connect(self.fileSelect)
我唯一的问题是更新lineEdit的文本;虽然使用的文件在使用Browse选中后会自动更新,但文本本身不会更新。帮忙吗?在
如果从
QFileDialog
filenames变量中选择了cancel按钮,那么您可以:参考号:QFileDialog.getOpenFileName()
相关问题 更多 >
编程相关推荐