3 import  wx
.grid 
as  gridlib
 
   5 #--------------------------------------------------------------------------- 
   7 class HugeTable(gridlib
.PyGridTableBase
): 
   9     def __init__(self
, log
): 
  10         gridlib
.PyGridTableBase
.__init
__(self
) 
  13         self
.odd
=gridlib
.GridCellAttr() 
  14         self
.odd
.SetBackgroundColour("sky blue") 
  15         self
.even
=gridlib
.GridCellAttr() 
  16         self
.even
.SetBackgroundColour("sea green") 
  18     def GetAttr(self
, row
, col
, kind
): 
  19         attr 
= [self
.even
, self
.odd
][row 
% 2] 
  25     # This is all it takes to make a custom data table to plug into a 
  26     # wxGrid.  There are many more methods that can be overridden, but 
  27     # the ones shown below are the required ones.  This table simply 
  28     # provides strings containing the row and column values. 
  30     def GetNumberRows(self
): 
  33     def GetNumberCols(self
): 
  36     def IsEmptyCell(self
, row
, col
): 
  39     def GetValue(self
, row
, col
): 
  40         return str( (row
, col
) ) 
  42     def SetValue(self
, row
, col
, value
): 
  43         self
.log
.write('SetValue(%d, %d, "%s") ignored.\n' % (row
, col
, value
)) 
  46 #--------------------------------------------------------------------------- 
  50 class HugeTableGrid(gridlib
.Grid
): 
  51     def __init__(self
, parent
, log
): 
  52         gridlib
.Grid
.__init
__(self
, parent
, -1) 
  54         table 
= HugeTable(log
) 
  56         # The second parameter means that the grid is to take ownership of the 
  57         # table and will destroy it when done.  Otherwise you would need to keep 
  58         # a reference to it and call it's Destroy method later. 
  59         self
.SetTable(table
, True) 
  61         self
.Bind(gridlib
.EVT_GRID_CELL_RIGHT_CLICK
, self
.OnRightDown
)   
  63     def OnRightDown(self
, event
): 
  65         print self
.GetSelectedRows() 
  68 #--------------------------------------------------------------------------- 
  70 class TestFrame(wx
.Frame
): 
  71     def __init__(self
, parent
, log
): 
  72         wx
.Frame
.__init
__(self
, parent
, -1, "Huge (virtual) Table Demo", size
=(640,480)) 
  73         grid 
= HugeTableGrid(self
, log
) 
  75         grid
.SetReadOnly(5,5, True) 
  77 #--------------------------------------------------------------------------- 
  79 if __name__ 
== '__main__': 
  81     app 
= wx
.PySimpleApp() 
  82     frame 
= TestFrame(None, sys
.stdout
) 
  87 #---------------------------------------------------------------------------