wxTreeCtrlについて
ノードの追加方法とかデータやテキストとの関連性とかその辺のドキュメントを読んでいたんですが、印象としてはちょっと設計が古く、GtkやSwingよりはMFCとかVCLに近いと感じました。wxTreeCtrlにノード(Item)を追加する際に、テキストと画像とデータを引数で入れる。ノード(Item)はGtkのTreeIterのようにクラスとして存在するわけではなくただのIDでしかないためメソッドも持っていない。そのため画像やテキストの入れ替えはTreeCtrlのメソッドで行う。TreeViewとTreeModelが一体になっている。つまりMとVが設計上分離されてない。おかげでコーディング量は少なくなるわけですが。
下記のソースでツリーが表示されます。最終的にはNoneの部分にデータを入れるわけです。もうすこしモダンでエレガントな記述ができるだろうと期待していたのですが、ちゃんと考えないとかなりダサい記述になりそうです。ちょっとネットを徘徊してMVCをきちんと分離する方法を模索してきます。
#TreeCtrl派生クラス内 imageList = wx.ImageList(16,16) idx1 = imageList.Add(wx.ArtProvider.GetBitmap(wx.ART_FOLDER,wx.ART_OTHER,(16,16))) idx2 = imageList.Add(wx.ArtProvider.GetBitmap(wx.ART_NEW,wx.ART_OTHER,(16,16))) self.AssignImageList(imageList) root = self.AddRoot("root", idx1, -1, None) item1 = self.AppendItem(root, "item1", idx2, -1, None) item2 = self.AppendItem(item1, "item2", idx2, -1, None) item3 = self.AppendItem(root, "item3", idx2, -1, None) item4 = self.AppendItem(item3, "item4", idx2, -1, None) self.Expand(root)