如何将焦点设置为wxGrid中的特定单元格? 例如,我在一个单元格中捕获输入按下的事件,我想获得焦点到单元格 这是对那个的权利。 默认行为是在按下enter时获得焦点到下面的单元格。
答案 0 :(得分:2)
wxpython演示向您展示了如何执行此操作
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.GetKeyCode() != 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.App()
frame = TestFrame(None, sys.stdout)
frame.Show(True)
app.MainLoop()
#---------------------------------------------------------------------------