如何使用QFileDialog知道要保存的文件类型

时间:2011-06-08 19:03:52

标签: python qt4 pyqt4 qfiledialog qtgui

关于pyQt4

我更喜欢在QFileDialog中为getSaveFilename使用静态方法,以便用户可以看到Windows / Mac本机对话框。

我的问题是,如果用户没有在保存文件名中输入文件扩展名(比如选择图像类型来保存文件),那么我没有办法检查看看是什么他们想要保存为的文件类型。

如何创建一个对话框来保存带过滤器的文件,以及如何知道用户选择的过滤器?

例如:

files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types)

使用var文件我只有文件的路径,但我不确定用户选择的格式是什么。

所以,我想知道如何获得扩展名或用户选择的文件类型。 是否有使用此方法获取selectedFilter?

非常感谢!

3 个答案:

答案 0 :(得分:5)

您可以使用getSaveFileNameAndFilter()方法:

filename, filter = QtGui.QFileDialog.getSaveFileNameAndFilter(self, 'Save file', '', files_types)

(在PySide中,getSaveFileNameAndFilter()不存在,getSaveFileName()已经表现出来了。我不确定PyQT api版本2的情况是否也是如此是Python 3)的默认值

答案 1 :(得分:0)

不可能。

实现这一目标的唯一方法是创建一个通用的对话框,但另一方面,你将丢失漂亮的原生窗口。

答案 2 :(得分:0)

在PyQt5中只需使用:

files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
options = QFileDialog.Options()
filename, _ = QFileDialog.getSaveFileName(
            self, 'Save as... File', 'untitled.gml', filter=file_types,options=options)