wx.DirDialogのスタイル

ディレクトリ(フォルダ)選択ダイアログを開きたいときには、wx.DirDialogを使う。そのとき指定できるスタイルは以下の通り。(参照:wxPython API Documentation — wxPython Phoenix 4.0.3 documentation

スタイル 説明
wx.DD_DEFAULT_STYLE デフォルトのスタイル。wx.DEFAULT_DIALOG_STYLE、wx.DD_NEW_DIR_BUTTON、wx.RESIZE_BORDERを同時に指定したものになる。
wx.DD_DIR_MUST_EXIST 既存のディレクトリのみを選択できるようにするスタイル。このスタイルを指定しなければ、ダイアログ上でディレクトリの新規作成ができるボタンが加えられる。
wx.DD_CHANGE_DIR ダイアログを開いたときのカレントディレクトリを、ユーザーが前に開いたディレクトリとするスタイル。


特に、wx.DD_CHANGE_DIRの指定は重要な場合が多いかと思う。頻繁に特定のディレクトリから選択する作業を行うようなユーザーは、ダイアログを開くたびに、ディレクトリを変えなくて済むのでストレスを減らすことができる。
ファイル選択ダイアログ(wx.FileDialog)でも同じことができて、その場合のスタイルは、wx.FD_CHANGE_DIRである。

また、スタイルの指定に関係なく、ディレクトリ選択ダイアログを開いたときに最初に開かれるディレクトリを固定することができる。それが、defaultPathの指定。
それがないと、アプリケーションを起動しているディレクトリがカレントディレクトリになってしまう(Windowsではデスクトップがカレントディレクトリになるみたい)。ユーザーに、特定のディレクトリを開くことを推奨するときに必須となる。でも、これはwx.DD_CHANGE_DIRスタイルと両立できない。defaultPathを指定するとwx.DD_CHANGE_DIRは無効となる。

  • wx.DirDialogの使用例
dpath = os.path.join(os.environ["HOME"], "testdirs")

dlg = wx.DirDialog(self, message='Choose a directory',
                   #style=wx.DD_DIR_MUST_EXIST,
                   defaultPath=dpath)
if dlg.ShowModal() == wx.ID_OK:
    print 'You selected %s' % dlg.GetPath()
dlg.Destroy()