【问题标题】:Can't add extension to file in QFileDialog无法在 QFileDialog 中向文件添加扩展名
【发布时间】:2015-07-02 08:16:54
【问题描述】:

我在使用 QFileDialog 在 PyQt4 中保存带有扩展名的文件(获取文件路径并附加扩展名)时遇到问题。我的 Python 代码如下所示:

dialog = QtGui.QFileDialog()
dialog.setDefaultSuffix(".json")
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)")

有效,路径正确,对话框标题和过滤器在对话框窗口中,但第二行被忽略。文件没有任何扩展名。

如何默认添加扩展?我做错了什么?

【问题讨论】:

  • 试试:dialog.setDefaultSuffix("json")

标签: python pyqt pyqt4 qfiledialog


【解决方案1】:

当您使用static functions 时,对QFileDialog 的实例调用setDefaultSuffix 无效。这些函数将创建自己的内部文件对话框,因此可以在其上设置的唯一选项是通过参数提供的任何选项。

当然,如果直接显示QFileDialog 的实例,setDefaultSuffix 将起作用:

dialog = QtGui.QFileDialog()
dialog.setFilter(dialog.filter() | QtCore.QDir.Hidden)
dialog.setDefaultSuffix('json')
dialog.setAcceptMode(QtGui.QFileDialog.AcceptSave)
dialog.setNameFilters(['JSON (*.json)'])
if dialog.exec_() == QtGui.QDialog.Accepted:
    print(dialog.selectedFiles())
else:
    print('Cancelled')

但请注意,您无法使用此方法获得本机文件对话框。

如果正确指定了文件名过滤器(见上文,并且 Barmak Shemirani's answer),本机文件对话框可能会提供一种自动选择文件扩展名的方法(Linux 上的 KDE 肯定是这种情况,但我不知道其他平台)。

【讨论】:

    【解决方案2】:

    尝试使用*.json 而不是.json

    file = dialog.getSaveFileName(None, "Title", "", "JSON (*.json)");
    

    【讨论】:

      猜你喜欢
      • 2010-12-29
      • 1970-01-01
      • 1970-01-01
      • 2014-03-07
      • 1970-01-01
      • 1970-01-01
      • 2022-12-19
      • 2010-10-28
      • 1970-01-01
      相关资源
      最近更新 更多