【问题标题】:Select only files with QFileDialog [PyQT]仅使用 QFileDialog [PyQT] 选择文件
【发布时间】:2014-10-24 12:05:18
【问题描述】:

我正在尝试使用 PyQT 中的 QFileDialog 小部件来获取文件名以保存结果。我正在使用 QFileDialog.getSaveFileName() 方法,并且正如预期的那样,如果我选择现有文件,则会出现一个警告框,提示该文件存在并提供覆盖它的可能性。但问题是,如果我选择一个目录而不是普通文件,则会出现与普通文件相同的警告框。我不喜欢这种行为,我想要一个警告框,通知有一个目录并且无法选择它,或者在选择常规文件之前禁用 OK 按钮。有可能吗?如果可能的话,我该怎么做?

谢谢

【问题讨论】:

  • 我很惊讶您在确定时没有进入所述目录。但是,要回答您的问题,如果您想在文件对话框中自定义行为,则必须继承而不是使用便利方法。
  • 感谢您的回答。但我不明白你评论中的第一句话。不知道是不是我解释的不好。 “问题”是,如果我选择一个目录而不是常规文件,QFileDialog 对象将其视为有效,并且我需要(如果可能且快速)对话框只接受常规文件

标签: qt pyqt qfiledialog


【解决方案1】:

静态函数将打开一个 native 对话框,除非您使用 options 参数设置DontUseNativeDialog,在这种情况下您将获得内置的 Qt 文件对话框:

    path = QFileDialog.getSaveFileName(options=QFileDialog.DontUseNativeDialog)

内置对话框通常比原生对话框更快,并且通常具有更明智的行为。特别是,如果您单击一个目录,保存按钮将变为一个打开按钮,因此永远无法选择目录。

如果你绝对必须有一个原生对话框,你可以尝试设置DontConfirmOverwrite 选项。这将允许您在对话框关闭后自行处理任何可能的覆盖。

【讨论】:

    猜你喜欢
    • 2018-07-25
    • 2014-05-02
    • 1970-01-01
    • 2011-09-23
    • 2011-01-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    相关资源
    最近更新 更多