wxListCtrlで作成した表の値を編集

リストコントロールwxListCtrlを使うと、簡単にきれいな表を作ることができる。ただし、このままだと表のセルの内容を直接編集することができない。これではとても不便だ。ユーザであれば、値を書き換えるためにマウスでポインタを移動してセルをクリックして値を入力する、ということを自然にやろうとするだろう。
その操作を実現するために、wx.lib.mixins.listctrlをimportすればいい。そうすると、wxListCtrlで作成した表の値を直接編集することが可能になる。
実装例。コードの一部を以下に示す。wx.lib.mixins.listctrlをimportして、TextEditMixinを継承している。これだけで、wxListCtrlの表が編集できるようになる。

import  wx.lib.mixins.listctrl  as  listmix

class TestListCtrl(wx.ListCtrl, listmix.TextEditMixin):
    def __init__(self, parent, ID, pos=wx.DefaultPosition,
                 size=wx.DefaultSize, style=0):
        wx.ListCtrl.__init__(self, parent, ID, pos, size, style)
        listmix.TextEditMixin.__init__(self)
        
        self.Populate()     

    def Populate(self):
        self.InsertColumn(0, "Column 1", wx.LIST_FORMAT_LEFT)
        self.InsertColumn(1, "Column 2", wx.LIST_FORMAT_LEFT)

        self.SetColumnWidth(0, 100)
        self.SetColumnWidth(1, 100)
        self.InsertStringItem(0, 'AAAAA')
        self.SetStringItem(0, 1, 'BBBBB')

実行例。

セルにポインタを持っていくと編集可能に。タブキーや矢印キーでセルの移動ができる。

値を書き換えた。