リンク

2016年4月29日金曜日

pythonでGUIツールを作る ~ファイル選択ダイアログ~

今回はpythonからwxPythonを使ってファイル選択ダイアログを表示させる方法をご紹介します。

# -*- coding: utf-8 -*-

import wx

app = wx.App()

# ファイル選択ダイアログを作成
dialog = wx.FileDialog(None, u'ファイルを選択してください')

# ファイル選択ダイアログを表示
dialog.ShowModal()

<結果>
※環境により表示内容は異なります
続いて詳細を見ていきます。


~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# ファイル選択ダイアログを作成
dialog = wx.FileDialog(None, u'ファイルを選択してください')
ここではwx.FileDialogクラスをインスタンス化し、表示させる前準備を行っています。
引数は(親ウィジット、タイトル部分に表示する文字列)です。

さらに引数を追加したり、スタイルを設定することでカスタマイズが可能です。

# 初期表示フォルダを指定する
first_path = "C:\\Users\\hoge\\Desktop"
dialog = wx.FileDialog(None, u'ファイルを選択してください', first_path)
# 選択可能なファイルを制限する
filter = "python file(*.py;*.pyw) | *.py;*.pyw | All file(*.*) | *.*"
dialog = wx.FileDialog(None, u'ファイルを選択してください', '', '', filter)
# ダイアログを「開く」モードで起動する
dialog = wx.FileDialog(None, u'ファイルを選択してください', style=wx.FD_OPEN)
# ダイアログを「保存」モードで起動する
dialog = wx.FileDialog(None, u'ファイルを選択してください', style=wx.FD_SAVE)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ここからは、wx.FileDialogクラスでよく使用する関数をご紹介します。
# 選択したファイルパスを取得する
dialog.GetPath()
# 初期表示フォルダを指定する
dialog.SetDirectory(first_path)
# 選択可能なファイルを制限する
dialog.SetWildcard(filter)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

=======================================================================
環 境:Python 2.7.9 / Windows7
=======================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります! \(^o^)/
=======================================================================

8 件のコメント:

  1. Python初心者です。
    分かりやすい記事をありがとうございます。

    >ここからは、wx.FileDialogクラスでよく使用する関数をご紹介します。
    ># 選択したファイルパスを取得する
    >dialog.GetPah()

    上記の箇所の3行目がPathになっていません。
    とても参考にしているサイトなので暇があるときに直していただきたいです。

    返信削除
    返信
    1. ご指摘いただきありがとうございます!
      誤字がありましたので修正いたしました!
      いつもご愛顧いただきありがとうございます!(^o^)

      削除
  2. カスタマイズのち、
    # 選択可能なファイルを制限する
    が動作しません。

    公式の最新版を確認したところ、"wildcard=" と入れる必要がありました。
    お手数ですが修正をお願いします。

    返信削除
    返信
    1. コメントありがとうございます(^^)

      ご指摘の件ですが、当方では記事の内容のままで、フィルターをかけることができました。
      ↓ちなみに、このように書きました。

      # -*- coding: utf-8 -*-

      import wx

      app = wx.App()

      # ファイル選択ダイアログを作成
      dialog = wx.FileDialog(None, u'ファイルを選択してください')

      # 選択可能なファイルを制限する
      filter = "python file(*.py;*.pyw) | *.py;*.pyw | All file(*.*) | *.*"
      dialog = wx.FileDialog(None, u'ファイルを選択してください', '', '', filter)

      # ファイル選択ダイアログを表示
      dialog.ShowModal()

      差し支えなければ、どのように記述して制限がかからなかったのかご教示いただけませんか?
      何卒、ご検討のほどよろしくお願いいたします。

      削除
  3. このコメントは投稿者によって削除されました。

    返信削除
  4. ファイルダイアログ内に[エンコード]などのコンボボックスを設置することは可能でしょうか。
    メモ帳とかにあるやつです。

    返信削除
    返信
    1. コメントありがとうございます。
      wx.FileDialogにコンボボックスの追加はできないようです(TдT)

      削除
    2. 返答ありがとうございます。
      やはりそうですか...

      削除