wxPython Grid Cell change question
Kiran
Kiran.Karra at gmail.com
Fri Jul 14 10:33:31 EDT 2006
Never mind, I used 2 different binds for the 2 different situations and
it worked.
thanks for looking anyhow.
-- Kiran
Kiran wrote:
> Hello All,
> I created a grid, where I register events every time the user changes
> an existing value inside the grid control. Right now, I am using the
> event: EVT_GRID_CELL_CHANGE. However, I realized that I need to
> register that same kind of event even if the user doesnt change the
> value, but just selects and then deselects.
>
> I tried creating my own custom event, where i check to see if the
> editor is activated and then deactivated, and if so, then set the sell
> value. However, this doesnt work because the value that it needs to be
> set to is the same previous value that was in the grid. Therefore, I
> can never get a new value in the grid. Here is the code for the events:
>
> in init():
> self.Bind(wx.grid.EVT_GRID_EDITOR_SHOWN, self.EditorShown)
> self.Bind(wx.grid.EVT_GRID_EDITOR_HIDDEN, self.EditorHidden)
>
>
> def EditorShown(self, event):
> self.editorShown = True
> event.Skip()
>
> def EditorHidden(self, event):
> self.editorHidden = True
> row = event.GetRow()
> col = event.GetCol()
> print "VAL = " + str(self.grid.GetCellValue(row, col))
> +str(self.OnTestCellValue(row, col))
> event.Skip()
>
> def OnTestCellValue(self, row, col):
> if self.editorShown and self.editorHidden:
> self.editorShown = False
> self.editorHidden = False
> self.SetCellValue(row, col)
>
> def SetCellValue(self, row, col):
> print "EVENT PROCESSIGN STARTED"
> print "RAW VAL = " + str(self.grid.GetCellValue(row, col))
> value = int(self.grid.GetCellValue(row, col), 16)
> print "VAL = " + str(value)
> # if we need to add a row
> if row == (len(self.data)-1):
> self.expandGrid()
> self.data.append([])
> # if we need to delete a row
> if row != 0 and value == '':
> self.data[row][3] = 'Delete'
> else:
> self.addToData(row, col, value, True)
> # whether the user intended a read or write
> if self.data[row][3] != 'Delete':
> if col == 1:
> self.data[row][3] = 'Read'
> elif col == 2:
> self.data[row][3] = 'Write'
>
> q = copy.deepcopy(self.data) # cloning object
> self.requestQueue.put(q) # putting object onto queue
> print "EVENT PROCESSIGN ENDED"
>
> Thanks a lot for your help, and please mind the spacing.
>
> I should note that before, my bind was:
> self.Bind(wx.grid.EVT_GTID_CELL_CHANGE, self.SetCellValue)
>
>
> thanks,
> Kiran
More information about the Python-list
mailing list