quickgui を改造してみる (4) - リストを表示したい
ここまできたらもっとやってみるだ。何か検索結果を簡単に一覧表示したいときがある。じゃあ、やってみる。参考にしたのは、String formating in wx.ListBoxあたりだったかな。しばらく前に書いたものなので忘れてしまった。タイトル、カラム名のリスト、データのリストを渡してやると、一覧表示してくれるようなものを作ってみた。まずは、quickgui に以下を追加しておく。import sysfrom wx.lib.mixins.listctrl import ListCtrlAutoWidthMixinclass 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 qcolumns =('名前','出生地','生年','血液型','好きな食べ物')data = [('平 将門', '東京都', '1981', 'A','チョコレート'), ('平 清盛', '神奈川県', '1949','B','メロン'), ('宮本 武蔵', '埼玉県', '1949','AB','いちじく'),]q.autolist("デタラメデータ", columns, data, size=(200,100))なかなか便利かもしれない。