web-dev-qa-db-ja.com

QFileDialogオプションを使用してsaveFileNameを取得する方法

QFileDialogを使用して、テキストファイルを保存するファイル名と場所を指定するようにユーザーに要求しています。 QtGui.QFileDialog.getSaveFileNameをいじってみましたが、デフォルトのサフィックスの設定や、ファイルの保存ダイアログの詳細ビューを有効にするなど、いくつかのオプションを使用することに興味がありました。 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に渡しながら、これを行う方法を誰かが知っていますか?

10
user3161430

QFileDialogのオブジェクトを作成する必要はありません。必要に応じて使用できる4つの静的メソッドを提供するためです。

_1) QFileDialog.getExistingDirectory(...)
2) QFileDialog.getOpenFileName(...)
3) QFileDialog.getOpenFileNames(...)
4) QFileDialog.getSaveFileName(...)
_

あなたのニーズに応じて、あなたは4番目のものを必要としています。デフォルトのファイル拡張子について、この関数に引数を提供することもできます。次のように使用できます。

_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

21
qurban

dlg.selectedFiles()は、選択されたファイル名を含むUnicode文字列のリストを返します。

5