import wx import wx.grid as gridlib #--------------------------------------------------------------------------- class NewEnterHandlingGrid(gridlib.Grid): def __init__(self, parent, log): gridlib.Grid.__init__(self, parent, -1) self.log = log self.CreateGrid(20, 6) self.SetCellValue(0, 0, "Enter moves to the right") self.SetCellValue(0, 5, "Enter wraps to next row") self.SetColSize(0, 150) self.SetColSize(5, 150) self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown) def OnKeyDown(self, evt): if evt.KeyCode() != wx.WXK_RETURN: evt.Skip() return if evt.ControlDown(): # the edit control needs this key evt.Skip() return self.DisableCellEditControl() success = self.MoveCursorRight(evt.ShiftDown()) if not success: newRow = self.GetGridCursorRow() + 1 if newRow < self.GetTable().GetNumberRows(): self.SetGridCursor(newRow, 0) self.MakeCellVisible(newRow, 0) else: # this would be a good place to add a new row if your app # needs to do that pass #--------------------------------------------------------------------------- class TestFrame(wx.Frame): def __init__(self, parent, log): wx.Frame.__init__(self, parent, -1, "Simple Grid Demo", size=(640,480)) grid = NewEnterHandlingGrid(self, log) #--------------------------------------------------------------------------- if __name__ == '__main__': import sys app = wx.PySimpleApp() frame = TestFrame(None, sys.stdout) frame.Show(True) app.MainLoop() #---------------------------------------------------------------------------