WxPYTHON GetValue from wxGrid HELP
Larry Bates
lbates at swamisoft.com
Fri Jun 25 18:07:37 EDT 2004
All you do is:
self.GetCellValue(row, column)
Where self is a wxGrid class instance.
Sample class from working program:
class SimpleGrid(wxGrid): ##, wxGridAutoEditMixin):
def __init__(self, parent):
wxGrid.__init__(self, parent, -1)
#
# Get shortcuts to some editors for different types of cells
#
bEditor=wxGridCellBoolEditor()
bRenderer=wxGridCellBoolRenderer()
tEditor=wxGridCellTextEditor()
tRenderer=wxGridCellStringRenderer()
fEditor=wxGridCellFloatEditor()
fRenderer=wxGridCellFloatRenderer()
fRenderer.SetPrecision(2)
#
# Define and set the column sizes and labels
#
# Display
#--Column Heading, Width, Alignment,read-only, editor, renderer
self.columndefs=(
("?", 20, wxALIGN_LEFT, false, bEditor, bRenderer),
("Cust#", 50, wxALIGN_LEFT, true, tEditor, tRenderer),
("Cust Name", 180, wxALIGN_LEFT, true, tEditor, tRenderer),
("Reference", 100, wxALIGN_LEFT, true, tEditor, tRenderer),
("DocType", 50, wxALIGN_CENTRE,true, tEditor, tRenderer),
("Inv. #", 75, wxALIGN_CENTRE,true, tEditor, tRenderer),
("InvDate", 60, wxALIGN_CENTRE,true, tEditor, tRenderer),
("L#", 35, wxALIGN_CENTRE,true, tEditor, tRenderer),
("Item #", 65, wxALIGN_CENTRE,true, tEditor, tRenderer),
("Description",300, wxALIGN_LEFT, false, tEditor, tRenderer),
("Qty", 50, wxALIGN_RIGHT, false, tEditor, tRenderer),
("Price", 50, wxALIGN_RIGHT, true, fEditor, fRenderer),
("Cost", 50, wxALIGN_RIGHT, true, fEditor, fRenderer),
("OMMC?", 60, wxALIGN_CENTRE,false, tEditor, tRenderer),
("OMMC $", 70, wxALIGN_RIGHT, false, tEditor, tRenderer),
("S#", 35, wxALIGN_CENTRE,false, tEditor, tRenderer),
("Serial #'s", 300, wxALIGN_LEFT, false, tEditor, tRenderer)
)
self.columncount=len(self.columndefs)
self.CreateGrid(0, self.columncount)
#
# Set column widths
#
map(self.SetColSize, range(self.columncount),
[a[1] for a in self.columndefs])
#
# Set custom column labels
#
map(self.SetColLabelValue, range(self.columncount),
[a[0] for a in self.columndefs])
#
# Sheet will toggle between these two colors on change of invoice
number
#
# LightGray
self._backgroundcolors=[wxWHITE,"#CCCCCC"]
self._toggleBGC=0
#
# Register event handlers
#
#EVT_GRID_CELL_LEFT_DCLICK(self, self.OnCellLeftDClick)
#EVT_GRID_CELL_LEFT_CLICK(self, self.OnCellLeftClick)
#EVT_GRID_CELL_RIGHT_CLICK(self, self.OnCellRightClick)
#EVT_GRID_RANGE_SELECT(self, self.OnRangeSelect)
EVT_GRID_CELL_CHANGE(self, self.OnCellChange)
return
def OnCellChange(self, evt):
row=evt.GetRow()
col=evt.GetCol()
#
# Special handlers for some columns
#
if col == 13:
self.SetCellValue(row, col, self.GetCellValue(row,col).upper())
if self.GetCellValue(row, col) not in ("Y","N"):
self.SetCellValue(row, col, "Y")
if self.GetCellValue(row, col) == "N":
self.SetCellTextColour(row, 13, wxBLACK)
if self.GetCellValue(row, col) == "Y" and \
self.GetCellValue(row, 14) == "0.00":
self.SetCellTextColour(row, col, wxRED)
elif col == 14:
if self._trace: self.logf.writelines("T","Col=14 functions")
equation=self.GetCellValue(row, col)
if equation[0] == "=": equation=equation[1:]
try: value="%.2f" % eval(equation)
except: value="0.00"
self.SetCellValue(row, col, value)
if value != "0.00" and self.GetCellValue(row, 13) == "Y":
self.SetCellTextColour(row, 13, wxBLACK)
elif value == "0.00" and self.GetCellValue(row, 13) == "Y":
self.SetCellTextColour(row, 13, wxRED)
elif col == 15:
self.SetCellValue(row, col, self.GetCellValue(row,col).upper())
if self.GetCellValue(row, col) not in ("Y","N"):
self.SetCellValue(row, col, "Y")
if self.GetCellValue(row, col) == "N":
self.SetCellTextColour(row, col, wxBLACK)
self.SetCellTextColour(row, 9, wxBLACK)
if self.GetCellValue(row, col) == "Y" and \
not self.GetCellValue(row, 16):
self.SetCellTextColour(row, col, wxRED)
self.SetCellTextColour(row, 9, wxRED)
else: return
self.ForceRefresh()
return
Hope it helps. I pretty much got this from the wxWindows demos
that come with standard installation.
Regards,
Larry Bates
Syscon, Inc.
"matthiasjanes" <matthiasjanes at gmx.net> wrote in message
news:d588131f.0406251204.2a2dc6da at posting.google.com...
> dear all,
>
> I just need a little help.
>
> could anyone give real code example (simple) how to read the value of
> a grid cell.
>
> i could not figure it out and really would like to do a simple
> spreadsheet application in wxpython (my first try with wxpython gui)
>
> so, if any one knows just how to read the value of a cell - a real
> working example would be greatly appriciated
>
> Matthias Janes
More information about the Python-list
mailing list