3

关于pyQt4

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

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

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

例如:

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

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

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

非常感谢!

4

3 回答 3

6

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

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

(然而,在PySide中,getSaveFileNameAndFilter()不存在,并且getSaveFileName()已经以这种方式运行。我不确定 PyQT api 版本 2 是否也是这种情况,这是 Python 3 的默认设置)

于 2011-09-15T16:06:22.600 回答
0

这是不可能的。

做到这一点的唯一方法是创建一个通用对话框,但另一方面,您将失去漂亮的原生窗口。

于 2011-08-18T19:21:17.583 回答
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)
于 2020-03-06T07:04:11.563 回答