In wxPython, you can use wxGrid to do this, since it supports virtual mode and custom cell rendering.
This is the minimum interface you should implement for the wxGrid data provider:
class GridData(wx.grid.PyGridTableBase):
def GetColLabelValue(self, col):
pass
def GetNumberRows(self):
pass
def GetNumberCols(self):
pass
def IsEmptyCell(self, row, col):
pass
def GetValue(self, row, col):
pass
- , wxGrid:
class CellRenderer(wx.grid.PyGridCellRenderer):
def Draw(self, grid, attr, dc, rect, row, col, isSelected):
pass
, wxPython docs demos, Grid_MegaExample.