PyQt文件浏览-设置默认选项



我一直在尝试在我正在设计的GUI中实现一个文件浏览小部件。我使用的是QFileDialog模块,它工作得很好——我可以用以下代码行浏览和保存文件:

filenames = QFileDialog.getOpenFileName()

我的小部件设置了一个QLineEdit,我想显示所选文件的名称,还有一个QPushButton,我想启动上面的代码行。不过,我想知道是否有办法设置"默认"选项。如果没有点击浏览按钮,我希望文件如下:

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

哪个链接到以下功能。正如您所看到的,这目前无法正常工作,因为在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

我的"重新翻译"浏览按钮和行编辑看起来像这样:

self.lineEdit.setText(_translate("ROIGUI", str(self.fileSelect()), None))
self.Browse.clicked.connect(self.fileSelect)

我唯一的问题是让我的lineEdit的文本更新;尽管使用中的文件本身在使用Browse选择后会更新,但文本本身不会更新。帮助

如果从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.

参考:QFileDialog.getOpenFileName()

最新更新