2016-03-24 22 views
1

私のPyQtアプリケーションでは、ネイティブであるがカスタムQFileDialogを実行しようとしています。
私のコードは次のようになります。ネイティブカスタムファイルダイアログPyQt

dlg = QtGui.QFileDialog(self, caption=self.tr("Select a file"))) 
dlg.setNameFilters("Text files (*.txt)") 

if dlg.exec_(): 
    name = dlg.selectedFiles() 

しかし、これはネイティブではなくQtダイアログを示しています。私は試しました

dlg.setOption(QtGui.QFileDialog.DontUseNativeDialog, False) 

しかし、これは助けになりませんでした。
カスタムネイティブQFileDialogを実行するにはどうすればよいですか?

答えて

0

QFileDialogの静的関数を使用すると、ネイティブのファイルダイアログしか表示できません。 DontUseNativeDialogオプションは、静的関数を使用する場合にのみ機能します。

QFileDialog.getSaveFileName()など

Docs

からQFileDialogを作成する最も簡単な方法は、静的関数を使用することです。 Windows、Mac OS X、KDE、GNOMEでは、これらの静的関数は、可能であればネイティブファイルダイアログを呼び出します。

QFileDialog.DontUseNativeDialog 0x00000010 

ネイティブファイルダイアログを使用しないでください。デフォルトでは、Q_OBJECTマクロを含むQFileDialogのサブクラスを使用しないかぎり、ネイティブファイルダイアログが使用されます。

0

カスタムネイティブダイアログは矛盾したintermsです。ネイティブダイアログを使用する主な理由は、正確にのを得ることができるためです。

しかし、これはgetOpenFileNameはあなたが任意のカスタマイズせずにあなたが望むものを達成することを可能にするので、議論の余地がポイントです:

name = QFileDialog.getOpenFileName(
      parent=self, 
      caption=self.tr("Select a file"), 
      filter=self.tr('Text files (*.txt)'), 
      ) 
if name: 
    print(name) 

上記の引数に加えて、dirは、あなたがスタートを設定することを可能にする、もありますディレクトリ; selectedFilter初期フィルターを設定することができます; optionsを使用して、Option valuesを1つ以上設定することができます(ネイティブのファイルダイアログに関連するものではありません)。