リンク

2016年4月22日金曜日

pythonでGUIツールを作る ~リストボックス~

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

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

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

今回は、リスト系ウィジットの1つである”リストボックス“(ListBox)をご紹介します。
リストボックスはリスト表示された選択肢の中から、ひとつもしくは複数の項目を選択する際によく使用されます。

# -*- 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")

# リストボックスの設置
listbox = wx.ListBox(panel, -1, choices=array)

frame.Show()
app.MainLoop()

<結果>

上記スクリプト内で、過去に解説した内容については省略致します。
ご確認いただきたい場合は、wxPythonのススメ ~基礎編~をご覧ください。

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


~~詳細~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
# 選択肢の作成(リスト)
array = ("test1", "test2", "test3", "test4", "test5")
リストボックス内に追加する選択項目は、事前にリストを作成しておく必要があります。
# リストボックスの設置
listbox = wx.ListBox(panel, -1, choices=array)
リストボックスを作成するには、wx.ListBoxクラスを使用します。
listboxは引数に(親ウィジット、識別子、選択項目)を指定しています。
また、追加でスタイルを指定することができます。
スタイルを指定することで、複数選択を可能にする、スクロールバーの有無などを変更することが可能です。
# 単一選択型(デフォルト)
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_SINGLE)

# 複数選択型(Ctrlキー or Shiftキー:不要)
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_MULTIPLE)

# 複数選択型(Ctrlキー or Shiftキー:必要)
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_EXTENDED)

# スクロールバーを付ける(必要時のみ、横スクロールを表示する)
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_HSCROLL)

# スクロールバーを付ける(常時縦スクロールを表示する)
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_ALWAYS_SB)

# スクロールバーを付ける(必要時のみ、縦スクロールを表示する)
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_NEEDED_SB)

# ソート
listbox = wx.ListBox(panel, -1, choices=array, style=wx.LB_SORT)
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
 ここからは、wx.ListBoxクラスでよく使用する主な関数をご紹介します。
# 項目を追加する
listbox.Append(u'新しい項目')

# 項目を刷新する
new_array = ('new_test1', 'new_test2', 'new_test3')
listbox.SetItems
(new_array) # 項目を削除する(インデックスで指定) listbox.Delete(2)

# 全ての項目を削除する
listbox.Clear()

# 全ての項目を取得する
listbox.GetItems()

# 項目の数を取得する
listbox.GetCount()

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

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

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

# 選択している項目のインデックスを取得する(複数選択の場合)
listbox.GetSelections()

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

# イベントを設定する(項目がダブルクリックされたら発生する)
listbox.Bind(wx.EVT_LISTBOX_DCLICK, select_item)
## ※select_itemは別途用意する関数を表す。 
~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
今回は、リスト系ウィジットの中でも特に使用頻度の高いリストボックスをご紹介しました。
ぜひご参考ください。
==================================================================
環 境:Python 2.7.9 / Windows7 ==================================================================
この記事が参考になりましたら、シェア・フォロー・おすすめしていただけると励みになります!
==================================================================

0 件のコメント:

コメントを投稿