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

Jon*_*ira 3 python qt4 pyqt4 qtgui qfiledialog

关于pyQt4

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

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

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

例如:

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

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

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

非常感谢!

Ste*_*ven 6

您可以使用以下getSaveFileNameAndFilter()方法:

filename, filter = QtGui.QFileDialog.getSaveFileNameAndFilter(self, 'Save file', '', files_types)
Run Code Online (Sandbox Code Playgroud)

(但是在PySide中,getSaveFileNameAndFilter()不存在,并且getSaveFileName()已经表现得那样了.我不确定PyQT api版本2是否也是这种情况,这是Python 3的默认设置)

  • 如果有人使用 PyQt5,则“getSaveFileNameAndFilter()”方法将重命名为“getSaveFileName()”。例如: `file_name, filter = QFileDialog.getSaveFileName(self, '保存文本报告', 'myreport.txt', "text (*.txt);;html (*.html)")` 参见 [docs](http ://pyqt.sourceforge.net/Docs/PyQt5/pyqt4_differences.html) (2认同)