芋の独り言

当ブログへのアクセスは当ブログのプライバシーポリシーに同意したものとみなします.

wxPythonによるファイル・フォルダ選択ダイアログ

フォルダの選択

def folda_choice(text):
    # wx.FD_OPEN:ダイアログを「開く」モードで起動する
    app=wx.App()
    # フォルダ選択ダイアログを作成
    dialog = wx.DirDialog(None, u'{}フォルダを選択してください'.format(text), style=wx.FD_OPEN )
    # フォルダが選択されたとき
    if dialog.ShowModal() == wx.ID_OK:
        # 選択したファイルパスを取得する
        folda_path=dialog.GetPath()
        dialog.Destroy()
        return folda_path
    elif dialog.ShowModal() == wx.ID_CANCEL:
        sys.exit()

ファイルを1つ選択

def file_choice(text):
    # ファイル選択ダイアログを作成
    app=wx.App()
    # 選択可能なファイルを制限する
    filters = " txt files (*.txt)|*.txt"
    # ファイル選択ダイアログを作成
    dialog = wx.FileDialog(None, u'{}ファイルを選択してください'.format(text), style=wx.FD_OPEN )
    # 選択可能なファイルを制限する
    dialog.SetWildcard(filters)
    # ファイルが選択されたとき
    if dialog.ShowModal() == wx.ID_OK:
        # 選択したファイルパスを取得する
        file_path = dialog.GetPath()
        dialog.Destroy()
        return file_path # パスの文字列を返す
    elif dialog.ShowModal() == wx.ID_CANCEL:
        sys.exit()

ファイルを開いたフォルダ内で複数選択

def files_choice(text):
    # ファイル選択ダイアログを作成
    app=wx.App()
    # 選択可能なファイルを制限する
    filters = " txt files (*.txt)|*.txt"
    # ファイル選択ダイアログを作成
    # wx.FD_MULTIPLEを指定することで,複数のファイルを選択できる
    dialog = wx.FileDialog(None, u'{}ファイルを選択してください'.format(text), style=wx.FD_OPEN |wx.FD_MULTIPLE )
    # 選択可能なファイルを制限する
    dialog.SetWildcard(filters)
    # ファイルが選択されたとき
    if dialog.ShowModal() == wx.ID_OK:
        # 選択したファイルパスを取得する
        files_path = dialog.GetPaths()
        dialog.Destroy()
        return files_path # パスのリストを返す
    elif dialog.ShowModal() == wx.ID_CANCEL:
        sys.exit()

フォルダをまたいでファイルを複数選択はできない.
また,単体選択と違い,GetPaths()となり,返却値がリストになる.

参考

wxpython.org