リンク

2016年6月30日木曜日

pythonでGUIツールを作る ~選択ダイアログ(マルチ)~

wxPythonでは数々の即席ダイアログが初めから用意されています。

今回はそんな中から複数の項目を選択する場合に使用する「マルチチョイスダイアログ」をご紹介します。
# -*- coding: utf-8 -*-

import wx

# ボタンのクリックイベント
def click(event):
    # マルチチョイスダイアログ
    selections = [u'りんご', u'みかん', u'いちご', u'バナナ', u'スイカ', u'メロン']
    dlg = wx.MultiChoiceDialog(None, u'果物を入力してください', u'タイトル部分', selections)
    dlg.ShowModal()
    dlg.Destroy()

    # 選択項目を全て取得
    input_text = dlg.GetSelections()

    text = ""
    for r in input_text:
        text += selections[r] + ", "

    frame.SetStatusText(text)


app = wx.App()

frame = wx.Frame(None, -1, u'タイトル', size=(200, 200))
frame.CreateStatusBar()
p = wx.Panel(frame, -1)

button = wx.Button(p, -1, u'ボタン')
button.Bind(wx.EVT_BUTTON, click)

frame.Show()
app.MainLoop()

<結果>


続いて詳細を見ていきます。


~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
上記のスクリプトを実行すると、ボタンだけが配置されたシンプルなフレームが表示されます。

そのボタンをクリックすると、今回ご紹介するマルチチョイスダイアログが表示されます。
selections = [u'りんご', u'みかん', u'いちご', u'バナナ', u'スイカ', u'メロン']
このダイアログでは、事前に選択肢となるリストを準備しておく必要があります。

dlg = wx.MultiChoiceDialog(None, u'果物を入力してください', u'タイトル部分', selections)
この記述でマルチチョイスダイアログをインスタンス化しています。
引数は(親ウィジット、メッセージ、タイトル、選択肢(リスト))となります。

続いて、マルチチョイスダイアログで使用する関数をご紹介します。
# 選択された項目のインデックス値をリストで返す
dlg.GetSelections()

# 指定したインデックス値(リスト)をデフォルトで選択状態にする
dlg.SetSelection(2)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

以前ご紹介したシングルチョイスダイアログと異なり、マルチチョイスダイアログは一度に複数選択することができます。

シングルチョイスダイアログはこちら → pythonでGUIツールを作る ~選択ダイアログ(シングル)~

チェックボックスでの選択方式なので、直感的に操作することができ、PC初心者でも気軽に扱うことができます。

=======================================================================
環 境:Python 2.7.9 / Windows7
=======================================================================
この記事が参考になりましたら、シェア・フォローお願いします
=======================================================================

2 件のコメント: