无法在 QFileDialog 中为文件添加扩展名
Can't add extension to file in QFileDialog
我在使用 QFileDialog 在 PyQt4 中保存带扩展名的文件(获取文件路径并追加扩展名)时遇到问题。我的 Python 代码如下所示:
dialog = QtGui.QFileDialog()
dialog.setDefaultSuffix(".json")
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)")
有效,路径正确,对话框标题和过滤器在对话框 window 中,但第二行被忽略。文件没有任何扩展名。
如何默认添加扩展?我做错了什么?
尝试使用 *.json
而不是 .json
file = dialog.getSaveFileName(None, "Title", "", "JSON (*.json)");
在 QFileDialog
的实例上调用 setDefaultSuffix
在您使用 static functions 时无效。这些函数将创建自己的内部文件对话框,因此可以在其上设置的唯一选项是通过参数提供的任何选项。
当然,setDefaultSuffix
如果直接显示QFileDialog
的实例就可以了:
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')
但请注意,您无法使用此方法获得本机文件对话框。
如果正确指定了文件名过滤器(见上文,以及
), 本机文件对话框可能提供了一种自动选择文件扩展名的方法(Linux 上的 KDE 肯定是这种情况,但我不知道其他平台)。
我在使用 QFileDialog 在 PyQt4 中保存带扩展名的文件(获取文件路径并追加扩展名)时遇到问题。我的 Python 代码如下所示:
dialog = QtGui.QFileDialog()
dialog.setDefaultSuffix(".json")
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)")
有效,路径正确,对话框标题和过滤器在对话框 window 中,但第二行被忽略。文件没有任何扩展名。
如何默认添加扩展?我做错了什么?
尝试使用 *.json
而不是 .json
file = dialog.getSaveFileName(None, "Title", "", "JSON (*.json)");
在 QFileDialog
的实例上调用 setDefaultSuffix
在您使用 static functions 时无效。这些函数将创建自己的内部文件对话框,因此可以在其上设置的唯一选项是通过参数提供的任何选项。
当然,setDefaultSuffix
如果直接显示QFileDialog
的实例就可以了:
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')
但请注意,您无法使用此方法获得本机文件对话框。
如果正确指定了文件名过滤器(见上文,以及