python - 将焦点设置到单元格 wxGrid

标签 python wxpython wxgrid

如何将焦点设置到 wxGrid 中的特定单元格? 例如,我在一个单元格中捕获输入按下事件,并且我想获得单元格的焦点 就在那个的右边。 默认行为是按下 Enter 键时将焦点移到下面的单元格。

最佳答案

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()


#---------------------------------------------------------------------------

关于python - 将焦点设置到单元格 wxGrid,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/17124337/

相关文章:

python - 如何在python中获取和比较给定文件的日期和时间

python - 如何使文本适合 wxPython 网格中的单元格?

python - 文件中最常见的 "startswith"以推断注释字符

python - 如何禁用标准错误流的日志记录?

python - 在 Python 中使用库对元组进行分组

wxpython - 如何通过单击按钮在 wxpython 中创建附加窗口

python - 你如何强制 wx.ListCtrl 滚动条自动锁定到底部,以便在窗口中显示最新的数据?

javascript - Chrome默默嵌入桌面应用程序,并且可以通过Javascript在本地保存文件

c++ - wxWidgets 在 wxFlexGridSizer 中适合大的 wxGrid