Python 如何知道文件';s要保存的类型,使用QFileDialog
关于pyQt4 我更喜欢在QFileDialog中对getSaveFilename使用静态方法,以便用户看到Windows/Mac本机对话框 我的问题是,如果用户没有在“保存文件名”中键入文件扩展名(例如,在选择要将文件另存为的图像类型时),那么我无法检查用户希望另存为的文件类型 如何创建一个对话框来使用过滤器保存文件,以及如何知道用户选择了哪个过滤器 例如:Python 如何知道文件';s要保存的类型,使用QFileDialog,python,qt4,pyqt4,qfiledialog,qtgui,Python,Qt4,Pyqt4,Qfiledialog,Qtgui,关于pyQt4 我更喜欢在QFileDialog中对getSaveFilename使用静态方法,以便用户看到Windows/Mac本机对话框 我的问题是,如果用户没有在“保存文件名”中键入文件扩展名(例如,在选择要将文件另存为的图像类型时),那么我无法检查用户希望另存为的文件类型 如何创建一个对话框来使用过滤器保存文件,以及如何知道用户选择了哪个过滤器 例如: files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)" file =
files_types = "GML (*.gml);;Pickle (*.pickle);;YAML (*.yml)"
file = QtGui.QFileDialog.getSaveFileName(self, 'Save file', '', files_types)
对于var文件,我将只有文件的路径,但我不确定用户选择的格式
所以,我想知道如何获得扩展名,或者用户选择的文件类型。
是否可以使用此方法获取selectedFilter
非常感谢 这是不可能的
唯一的方法是创建一个通用对话框,但另一方面,您将丢失漂亮的本机窗口。您可以使用
getSaveFileNameAndFilter()
方法:
filename, filter = QtGui.QFileDialog.getSaveFileNameAndFilter(self, 'Save file', '', files_types)
(但是,getSaveFileNameAndFilter()
不存在,并且getSaveFileName()
已经这样做了。我不确定PyQT api版本2是否也是这种情况,PyQt5是Python 3的默认版本)在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)
我无法重现这个问题。即使我在“保存文件名”中关闭了扩展名,QFileDialog也会将选定的文件类型扩展名附加到返回的文件名中。你能多发一点你的代码吗?有各种选项会影响返回的文件。我想知道这些选项中是否有一个设置不正确。不正确,有可能,请参阅我的答案。如果有人使用PyQt5,则
getSaveFileNameAndFilter()
方法将重命名为getSaveFileName()
。例如:file\u name,filter=QFileDialog.getSaveFileName(self,'Save text report','myreport.txt',“text(*.txt);;html(*.html)”)