在 wx.grid 中输入关键行为

发布于 2024-12-13 00:33:17 字数 86 浏览 1 评论 0原文

谷歌搜索了很多没有任何结果...按下回车键时网格的默认行为是向下移动光标。但我必须使单元格编辑器在当前单元格中打开。我可以轻松挂钩关键事件,但如何打开编辑器?

Googling a lot without any results... The default behavior of the grid while pressing the enter key is moving cursor down. But I have to make the cell editor opened in the current cell. I can easily hook key event, but how can I open the editor?

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(1

手心的温暖 2024-12-20 00:33:17
import wx
import wx.grid

class MyGrid(wx.grid.Grid):
    def __init__(self, *args, **kwargs):
        wx.grid.Grid.__init__(self, *args, **kwargs)
        self.CreateGrid(8, 3)

        self.editor = wx.grid.GridCellChoiceEditor(["One", "Two", "Three"])
        self.SetCellEditor(1, 1, self.editor)
        self.SetCellValue(1, 0, "And here.")
        self.SetCellValue(1, 1, "Try here.")

        self.Bind(wx.EVT_KEY_DOWN, self.OnEnter)


    def OnEnter(self, e):
        if e.GetKeyCode() == wx.WXK_RETURN or e.GetKeyCode() == wx.WXK_NUMPAD_ENTER:
            self.EnableCellEditControl()
        else:
            e.Skip()


class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        self.grid = MyGrid(self)
        self.Show()



app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
import wx
import wx.grid

class MyGrid(wx.grid.Grid):
    def __init__(self, *args, **kwargs):
        wx.grid.Grid.__init__(self, *args, **kwargs)
        self.CreateGrid(8, 3)

        self.editor = wx.grid.GridCellChoiceEditor(["One", "Two", "Three"])
        self.SetCellEditor(1, 1, self.editor)
        self.SetCellValue(1, 0, "And here.")
        self.SetCellValue(1, 1, "Try here.")

        self.Bind(wx.EVT_KEY_DOWN, self.OnEnter)


    def OnEnter(self, e):
        if e.GetKeyCode() == wx.WXK_RETURN or e.GetKeyCode() == wx.WXK_NUMPAD_ENTER:
            self.EnableCellEditControl()
        else:
            e.Skip()


class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)
        self.grid = MyGrid(self)
        self.Show()



app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文