如何通过QFileDialog知道保存文件的类型
关于pyQt4
我更喜欢使用QFileDialog中的静态方法getSaveFilename,这样用户就能看到Windows或Mac系统原生的对话框。
我遇到的问题是,如果用户在保存文件名时没有输入文件扩展名(比如在选择保存为图片类型时),我就无法判断他们想保存成什么类型的文件。
我该如何创建一个可以保存文件的对话框,并且知道用户选择了哪个文件类型的过滤器呢?
举个例子:
files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types)
通过变量file,我只能得到文件的路径,但我不确定用户选择了什么格式。
所以,我想知道我该如何获取用户选择的扩展名或文件类型。有没有办法通过这种方法获取所选的过滤器呢?
非常感谢!
3 个回答
0
这是不可能的。
唯一的办法是创建一个通用的对话框,但这样一来,你就会失去那些漂亮的原生窗口效果。
1
在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)
6
你可以使用 getSaveFileNameAndFilter()
这个方法:
filename, filter = QtGui.QFileDialog.getSaveFileNameAndFilter(self, 'Save file', '', files_types)
(不过在 PySide 中,getSaveFileNameAndFilter()
这个方法是不存在的,而 getSaveFileName()
已经具备了类似的功能。我不太确定在 Python 3 默认的 PyQT api 版本 2 中是否也是这样。)