wxPythonのListCtrlには以下の4つのスタイルがあります。
- wx.LC_ICON
- wx.LC_SMALL_ICON
- wx.LC_LIST
- wx.LC_REPORT
今回はその中のwx.LC_ICON、wx.LC_SMALL_ICON、wx.LC_LISTの3つを一気にご紹介します。
それではいきなりスクリプトです。
# -*- coding: UTF-8 -*-
import wx
class App(wx.Frame):
def __init__(self, parent, id, title):
wx.Frame.__init__(self, parent, id, title, size=(500, 500), style=wx.DEFAULT_FRAME_STYLE)
# ステータスバー
self.CreateStatusBar()
# パネル
p = wx.Panel(self, wx.ID_ANY)
# ListCtrl0 大アイコン - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.listctrl = wx.ListCtrl(p, wx.ID_ANY, style=wx.LC_ICON)
self.listctrl.Bind(wx.EVT_LIST_ITEM_SELECTED, self.item_select)
# イメージリスト
imagelist = wx.ImageList(32, 32)
imagelist.Add(wx.Icon("a.png", wx.BITMAP_TYPE_PNG))
imagelist.Add(wx.Icon("b.png", wx.BITMAP_TYPE_PNG))
imagelist.Add(wx.Icon("c.png", wx.BITMAP_TYPE_PNG))
imagelist.Add(wx.Icon("d.png", wx.BITMAP_TYPE_PNG))
# ListCtrlにイメージリストを割り当て
self.listctrl.AssignImageList(imagelist, wx.IMAGE_LIST_NORMAL)
# ListCtrlにアイテムを追加
for x in range(4):
self.listctrl.InsertItem(x, 'item_%s' % x, x)
# ListCtrl1 小アイコン - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.listctrl1 = wx.ListCtrl(p, wx.ID_ANY, style=wx.LC_SMALL_ICON)
# イメージリスト
imagelist1 = wx.ImageList(16, 16)
imagelist1.Add(wx.Icon("a.png", wx.BITMAP_TYPE_PNG))
imagelist1.Add(wx.Icon("b.png", wx.BITMAP_TYPE_PNG))
imagelist1.Add(wx.Icon("c.png", wx.BITMAP_TYPE_PNG))
imagelist1.Add(wx.Icon("d.png", wx.BITMAP_TYPE_PNG))
# ListCtrlにイメージリストを割り当て
self.listctrl1.AssignImageList(imagelist1, wx.IMAGE_LIST_SMALL)
# ListCtrlにアイテムを追加
for y in range(4):
self.listctrl1.InsertItem(y, 'item_%s' % y, y)
# ListCtrl1 リスト - - - - - - - - - - - - - - - - - - - - - - - - - - -
self.listctrl2 = wx.ListCtrl(p, wx.ID_ANY, style=wx.LC_LIST)
# イメージリスト
imagelist2 = wx.ImageList(16, 16)
imagelist2.Add(wx.Icon("a.png", wx.BITMAP_TYPE_PNG))
imagelist2.Add(wx.Icon("b.png", wx.BITMAP_TYPE_PNG))
imagelist2.Add(wx.Icon("c.png", wx.BITMAP_TYPE_PNG))
imagelist2.Add(wx.Icon("d.png", wx.BITMAP_TYPE_PNG))
# ListCtrlにイメージリストを割り当て
self.listctrl2.AssignImageList(imagelist2, wx.IMAGE_LIST_SMALL)
# ListCtrlにアイテムを追加
for z in range(4):
self.listctrl2.InsertItem(z, 'item_%s' % z, z)
layout = wx.BoxSizer(wx.VERTICAL)
layout.Add(self.listctrl, flag=wx.EXPAND | wx.ALL, border=10, proportion=1)
layout.Add(self.listctrl1, flag=wx.EXPAND | wx.ALL, border=10, proportion=1)
layout.Add(self.listctrl2, flag=wx.EXPAND | wx.ALL, border=10, proportion=1)
p.SetSizer(layout)
self.Show()
def item_select(self, event):
""" アイテム選択時のイベントハンドラー """
# 選択したアイテムのインデックスを取得する
select_index = self.listctrl.GetFirstSelected()
# インデックスのアイテムからテキストを取得する
item_label = self.listctrl.GetItemText(select_index)
# ステータスバーの文字列を変更
self.SetStatusText(item_label + "を選択しました")
app = wx.App()
App(None, wx.ID_ANY, 'ListCtrl')
app.MainLoop()
<結果> ↓ ↓ ↓