无法在QFileDialog

时间:2015-04-23 22:23:38

标签: python pyqt pyqt4 qfiledialog

我在使用QFileDialog在PyQt4中保存带扩展名的文件(获取文件路径并附加扩展名)时出现问题。我的Python代码看起来像这样:

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

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

默认情况下如何添加扩展程序?我做错了什么?

2 个答案:

答案 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)");
相关问题