リンク

2016年4月22日金曜日

pythonでGUIツールを作る ~コンボボックス~

pythonでGUIフォームを作成するためのツールキットはいくつか存在します。
中でも「wxPython」はプリインストールされている「tkinter」よりも使い勝手・自由度が高く、人気があるようです。

当ブログではそんな「wxPython」を用いてpythonでGUIツールを作成する方法を少しずつご紹介していきます。

- - - - - - - - - - - - - - - - - - - - - - - - - - -

今回は、選択系ウィジットの1つである”コンボボックス“をご紹介します。
コンボボックスはドロップダウンして表示される選択肢の中から、ひとつの項目を選択する際によく使用されます。

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

import wx

app = wx.App()

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

# 選択肢の作成(リスト)
array = ("test1", "test2", "test3", "test4", "test5")

# コンボボックスの設置
combo = wx.ComboBox(panel, -1, u'選択', choices=array)

frame.Show()
app.MainLoop()


<結果>
プルダウンした状態
上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、~基礎編~をご覧ください。

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



~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 選択肢の作成(リスト)
array = ("test1", "test2", "test3", "test4", "test5")
コンボボックス内に追加する選択項目は、事前にリストを作成しておく必要があります。

# コンボボックスの設置
combo = wx.ComboBox(panel, -1, u'選択', choices=array)
コンボボックスを作成するには、wx.ComboBoxクラスを使用します。
comboは引数に(親ウィジット、識別子、初期表示文字列、選択項目)を指定しています。

また、追加でスタイルを指定することができます。
スタイルを指定することで、コンボボックスの型を変更することが可能です。
# 1.ドロップダウン型(デフォルト)
combo = wx.ComboBox(panel, -1, u'選択', choices=array, style=wx.CB_DROPDOWN)
#  選択肢は隠れている
#  値の直接入力が可能

# 2.シンプル型
combo = wx.ComboBox(panel, -1, u'選択', choices=array, style=wx.CB_SIMPLE)
#  選択肢が初めから全て表示されている
#  値の直接入力が可能
#  Windows限定

# 3.リードオンリー型
combo = wx.ComboBox(panel, -1, u'選択', choices=array, style=wx.CB_READONLY)
#  選択肢は隠れている
#  値の直接入力はできない(既存の項目から選択のみ可能)

# 4.ソート
combo = wx.ComboBox(panel, -1, u'選択', choices=array, style=wx.CB_SORT)
#  選択項目をアルファベット順にソートする
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

ここからは、wx.ComboBoxクラスでよく使用する主な関数をご紹介します。
# 項目を追加する
combo.Append('test99')

# 複数の項目を追加する
add_array = ('aaa', 'bbb', 'ccc')
combo.AppendItems(add_array)

# 選択項目を刷新する
new_array = ('new_test1', 'new_test2', 'new_test3')
combo.SetItems(new_array)

# 選択項目を削除する(インデックスで指定)
combo.Delete(1)

# 全ての選択項目を削除する
combo.Clear()

# 全ての選択項目を取得する
combo.GetItems()

# 選択項目の数を取得する
combo.GetCount()

# 指定の項目を選択状態にする(インデックスで指定)
combo.SetSelection(1)

# 指定の項目を選択状態にする(テキストで指定)
combo.SetStringSelection('test2')

# 選択している項目のインデックスを取得する
combo.GetSelection()

# 選択している項目のテキストを取得する
combo.GetStringSelection()

# 入力値を取得する
combo.GetValue()

# イベントを設定する(項目が選択されたら発生する)
combo.Bind(wx.EVT_COMBOBOX, select_item)
##  select_itemは別途用意する関数を表す。

# イベントを設定する(テキストが入力されたら発生する)
combo.Bind(wx.EVT_TEXT, input_text)
##  input_textは別途用意する関数を表す。
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~

コンボボックスは、複数の選択肢からひとつだけ選択して欲しい場合に使用します。
活躍する機会は多いと思いますので、ぜひご参考ください。

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

0 件のコメント:

コメントを投稿