我正在尝试使用 QFileDialog 提示用户提供文件名和位置以保存文本文件。我玩弄了 QtGui.QFileDialog.getSaveFileName,但我对使用一些选项感兴趣,比如设置默认后缀,并启用保存文件对话框的详细信息 View ,据我所知,这不是可以做到,单独使用 getSaveFileName。每当我设置这些时,getSaveFileName 对话框就会忽略它们。

所以,我最终得到了这样的结果:

dlg=QtGui.QFileDialog( self )
dlg.setWindowTitle( 'Print Things' )
dlg.setViewMode( QtGui.QFileDialog.Detail )
dlg.setNameFilters( [self.tr('Text Files (*.txt)'), self.tr('All Files (*)')] )
dlg.setDefaultSuffix( '.txt' )
if dlg.exec_() :
    print dlg

但是,现在我不确定如何获取用户传递的文件名?如果我打印 dlg.getSaveFileName,它只会弹出另一个保存文件对话框。任何人都知道如何做到这一点,同时还通过了所有的选项来QFileDialog,我要得到尊重?

最佳答案

不需要创建 QFileDialog 的对象,因为它提供了四种静态方法,可以根据需要使用。

1) QFileDialog.getExistingDirectory(...)
2) QFileDialog.getOpenFileName(...)
3) QFileDialog.getOpenFileNames(...)
4) QFileDialog.getSaveFileName(...)

根据您的需要,您需要第四个。您还可以为此函数提供参数以获取默认文件扩展名。您可以将其用作:
fileName = QtGui.QFileDialog.getSaveFileName(self, 'Dialog Title', '/path/to/default/directory', selectedFilter='*.txt')
if fileName:
    print fileName

如果您不知道用户可以将文件保存在哪个目录中,您可以将 /path/to/default/directory 保留为空字符串。

现在,当用户在输入文件名(无文件扩展名)后单击对话框上的保存按钮时,此方法将返回后跟 .txt 扩展名的文件路径。

有关 QFileDialog.getSaveFileName() 的更多信息可以在 here 中找到

关于python - 如何使用 QFileDialog 选项并检索 saveFileName?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/20928023/

10-13 06:59