バーチャルリストでリスト表示を低負荷に行う

wxPythonGUIを作るときの話。

wxListCtrlでリストを作成して表示する。しかし、リストが大きくなると表示にかかる時間やメモリの消費量も無視できなくなってくる。そのような場合のために、「バーチャルな」リストコントロールというものがある。

リストの中のアイテムについての情報を、そのアイテムを表示するときに「ダイナミックに」取得する。表示していないアイテムの情報は持たない。そのために、メモリが節約できる。

使い方は、wxPythonデモコードの中の、ListCtrl_virtual.pyに詳しい(実行例は下図)。wx.ListCtrlを継承して、wx.LC_VIRTUALというフラグを立てるだけ。

これと同様に、ListBoxをバーチャル化したwx.VListBoxというものもある。これは、ListBoxを継承してフラグを立てる...、とかではなく、VListBoxというコントロールがあるのでそれをそのまま使うことができる(実行例は下図)。これも、表示にかかる時間の短縮と消費メモリを節約するためのもの。


なかなか便利だ。