【问题标题】:PyQt file browsing - setting a default option?PyQt 文件浏览 - 设置默认选项?
【发布时间】:2015-02-18 22:21:04
【问题描述】:

我一直在尝试在我正在设计的 GUI 中实现文件浏览小部件。我正在使用 QFileDialog 模块,效果很好 - 我可以使用以下代码行浏览和保存文件:

filenames = QFileDialog.getOpenFileName()

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

filenames = str(glob.glob('*.npy')[0])

这将被保存为有问题的文件名并显示在我的 LineEdit 中。我的问题来自尝试在 LineEdit 中显示不同的文件名,具体取决于是否单击了浏览按钮。如果它已被单击,我希望 LineEdit 显示用户选择的文件而不是默认选项。以下是我的 retranslate 函数中适用的代码行:

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 的文本更新;虽然使用浏览的文件本身会更新,但文本本身不会更新。帮忙?

【问题讨论】:

    标签: python qt user-interface pyqt qfiledialog


    【解决方案1】:

    如果从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()

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2015-01-04
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2020-08-19
      • 1970-01-01
      • 2018-02-21
      • 1970-01-01
      相关资源
      最近更新 更多