import wx |
|
|
import wx.grid |
|
|
|
class TestTable(wx.grid.PyGridTableBase): |
|
def __init__(self): |
|
wx.grid.PyGridTableBase.__init__(self) |
|
self.data = { (1,1) : "Here", |
|
(2,2) : "is", |
|
(3,3) : "some", |
|
(4,4) : "data", |
|
} |
|
|
|
self.odd=wx.grid.GridCellAttr() |
|
self.odd.SetBackgroundColour("sky blue") |
|
self.odd.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD)) |
|
|
|
self.even=wx.grid.GridCellAttr() |
|
self.even.SetBackgroundColour("sea green") |
|
self.even.SetFont(wx.Font(10, wx.SWISS, wx.NORMAL, wx.BOLD)) |
|
|
|
|
|
# these five are the required methods |
|
def GetNumberRows(self): |
|
return 50 |
|
|
|
def GetNumberCols(self): |
|
return 50 |
|
|
|
def IsEmptyCell(self, row, col): |
|
return self.data.get((row, col)) is not None |
|
|
|
def GetValue(self, row, col): |
|
value = self.data.get((row, col)) |
|
if value is not None: |
|
return value |
|
else: |
|
return '' |
|
|
|
def SetValue(self, row, col, value): |
|
self.data[(row,col)] = value |
|
|
|
|
|
# the table can also provide the attribute for each cell |
|
def GetAttr(self, row, col, kind): |
|
attr = [self.even, self.odd][row % 2] |
|
attr.IncRef() |
|
return attr |
|
|
|
|
|
|
|
class TestFrame(wx.Frame): |
|
def __init__(self): |
|
wx.Frame.__init__(self, None, title="Grid Table", |
|
size=(640,480)) |
|
|
|
grid = wx.grid.Grid(self) |
|
|
|
table = TestTable() |
|
grid.SetTable(table, True) |
|
|
|
|
|
app = wx.PySimpleApp() |
|
frame = TestFrame() |
|
frame.Show() |
|
app.MainLoop() |