Warning: file_get_contents(/data/phpspider/zhask/data//catemap/2/python/295.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181

Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/sql-server-2005/2.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Python 如何知道文件';s要保存的类型,使用QFileDialog_Python_Qt4_Pyqt4_Qfiledialog_Qtgui - Fatal编程技术网

Python 如何知道文件';s要保存的类型,使用QFileDialog

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 =

关于pyQt4

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

我的问题是,如果用户没有在“保存文件名”中键入文件扩展名(例如,在选择要将文件另存为的图像类型时),那么我无法检查用户希望另存为的文件类型

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

例如:

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)”)