ここまできたらもっとやってみるだ。何か検索結果を簡単に一覧表示したいときがある。じゃあ、やってみる。参考にしたのは、
String formating in wx.ListBoxあたりだったかな。しばらく前に書いたものなので忘れてしまった。
タイトル、カラム名のリスト、データのリストを渡してやると、一覧表示してくれるようなものを作ってみた。まずは、quickgui に以下を追加しておく。
import sys
from wx.lib.mixins.listctrl import ListCtrlAutoWidthMixin
class AutoWidthListCtrl(wx.ListCtrl, ListCtrlAutoWidthMixin):
def __init__(self, parent):
wx.ListCtrl.__init__(self, parent, -1, style=wx.LC_REPORT)
ListCtrlAutoWidthMixin.__init__(self)
class AutoList(wx.Frame):
def __init__(self, parent, id, title, columns, data, size=(400, 200)):
wx.Frame.__init__(self, parent, id, title, size=size)
hbox = wx.BoxSizer(wx.HORIZONTAL)
panel = wx.Panel(self, -1)
self.list = AutoWidthListCtrl(panel)
for i, name in enumerate(columns):
self.list.InsertColumn(i, name)
number_of_data = i
for i in data:
index = self.list.InsertStringItem(sys.maxint, i[0])
rest = len(i) - 1
for j in range(rest):
self.list.SetStringItem(index, j+1, i[j+1])
hbox.Add(self.list, 1, wx.EXPAND)
panel.SetSizer(hbox)
self.Centre()
self.Show(True)
def autolist(title, columns, data):
app = wx.App()
AutoList(None, -1, title, columns, data)
app.MainLoop()
呼び出してみる。呼び出しは簡単。サイズもオプションで指定できるようにしてみた。
# -*- coding:utf-8 -*-
import quickgui as q
columns =('名前','出生地','生年','血液型','好きな食べ物')
data = [('平 将門', '東京都', '1981', 'A','チョコレート'),
('平 清盛', '神奈川県', '1949','B','メロン'),
('宮本 武蔵', '埼玉県', '1949','AB','いちじく'),
]
q.autolist("デタラメデータ", columns, data, size=(200,100))
なかなか便利かもしれない。