如何使用 QFileDialog 知道要保存的文件类型
关于 pyQt4
我更喜欢在 QFileDialog 中使用 getSaveFilename 的静态方法,以便用户看到 Windows/Mac 本机对话框。
我的问题是,如果用户没有在保存文件名中键入文件扩展名(例如选择要保存文件的图像类型时),那么我无法检查文件类型他们想另存为。
如何创建一个对话框来保存带有过滤器的文件,以及如何知道用户选择了哪个过滤器?
例如:
files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types)
对于 var 文件,我只有文件的路径,但我不确定用户选择的格式是什么。
所以,我想知道如何获得扩展名或用户选择的文件类型。 有没有办法使用此方法获取 selectedFilter ?
多谢!
About pyQt4
I prefer to use the static method for the getSaveFilename in the QFileDialog so that the user sees the Windows/Mac native dialog.
My problem is that if the user doesn't type the file extension the in the save file name (say when selecting an image type to save a file as), then I don't have a way of checking to see what type of file they wanted to save as.
How can I create a dialog to save files with a filter, and how to know which filter the user chose?
For example:
files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types)
With var file I'll have only the file's path, but I'm not sure whats the format that user chose.
So, I wanna know how could I get the extension, or the files type chosen by user.
Is there away to get the selectedFilter using this method?
Thanks a lot!
如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。
绑定邮箱获取回复消息
由于您还没有绑定你的真实邮箱,如果其他用户或者作者回复了您的评论,将不能在第一时间通知您!
发布评论
评论(3)
您可以使用 getSaveFileNameAndFilter() 方法:(
但是在 PySide 中,
getSaveFileNameAndFilter()
不存在,并且getSaveFileName()
已经这样做了,我不确定 PyQT api 版本 2 是否也是这种情况,这是 Python 的默认设置。 3)You can use the
getSaveFileNameAndFilter()
method:(In PySide however,
getSaveFileNameAndFilter()
does not exist, andgetSaveFileName()
already behaves that way. I'm not sure whether this is also the case for PyQT api version 2, which is the default for Python 3)在 PyQt5 中只需使用:
In PyQt5 just use:
这是不可能的。
做到这一点的唯一方法是创建一个通用对话框,但另一方面,您将失去漂亮的本机窗口。
Its not possible.
The only way to do this, is creating a generical dialog, but by another hand you will lost the pretty native windows.