我在使用QFileDialog在PyQt4中保存带扩展名的文件(获取文件路径并附加扩展名)时出现问题。我的Python代码看起来像这样:
dialog = QtGui.QFileDialog()
dialog.setDefaultSuffix(".json")
file = dialog.getSaveFileName(None, "Title", "", "JSON (.json)")
它工作正常,路径正确,对话框标题和过滤器在对话窗口中,但第二行被忽略。文件没有任何扩展名。
默认情况下如何添加扩展程序?我做错了什么?
答案 0 :(得分:3)
使用static functions时,在setDefaultSuffix
的实例上调用QFileDialog
无效。这些函数将创建自己的内部文件对话框,因此可以在其上设置的唯一选项是通过参数提供的任何选项。
当然,如果直接显示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')
但请注意,您无法使用此方法获取原生文件对话框。
如果正确指定了文件名过滤器(参见上文,和 Barmak Shemirani's answer),本机文件对话框可以提供一种自动选择文件扩展名的方法(Linux上的KDE就是这种情况,但我不了解其他平台)。
答案 1 :(得分:2)
尝试使用*.json
代替.json
file = dialog.getSaveFileName(None, "Title", "", "JSON (*.json)");