首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >wxPython:绑定wx.EVT_CHAR_HOOK禁用TextCtrl备份空间

wxPython:绑定wx.EVT_CHAR_HOOK禁用TextCtrl备份空间
EN

Stack Overflow用户
提问于 2013-12-06 05:27:38
回答 1查看 2.5K关注 0票数 2

我有一个wx.TextCtrl,我想要能够键入它,但也检测按键,如向上,向下,返回,ESC。

因此,我绑定了wx.EVT_KEY_DOWN来识别任何键压,而wx.EVT_CHAR_HOOK也可以在TextCtrl有焦点的情况下做同样的事情。

代码语言:javascript
运行
复制
self.Bind(wx.EVT_KEY_DOWN, self.keyPressed)
self.Bind(wx.EVT_CHAR_HOOK, self.keyPressed)

按下键,向下键,返回键,ESC被识别并正常工作,但是由于绑定EVT_CHAR_HOOK,当我输入TextCtrl时,我不能再使用左右回移。

有什么建议吗?

EN

回答 1

Stack Overflow用户

回答已采纳

发布于 2013-12-06 09:02:45

您应该在事件处理程序的末尾调用event.Skip()来进一步传播它。这对我来说很管用:

代码语言:javascript
运行
复制
import wx

class MainWindow(wx.Frame):
    def __init__(self, *args, **kwargs):
        wx.Frame.__init__(self, *args, **kwargs)

        self.panel = wx.Panel(self)
        self.text = wx.TextCtrl(self.panel)
        self.text.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown)
        self.text.Bind(wx.EVT_KEY_UP, self.OnKeyUp)

        self.sizer = wx.BoxSizer()
        self.sizer.Add(self.text, 1)

        self.panel.SetSizerAndFit(self.sizer)  
        self.Show()

    def OnKeyDown(self, e):      
        code = e.GetKeyCode()
        if code == wx.WXK_ESCAPE:
            print("Escape")
        if code == wx.WXK_UP:
            print("Up")
        if code == wx.WXK_DOWN:
            print("Down")
        e.Skip()

    def OnKeyUp(self, e):
        code = e.GetKeyCode()
        if code == wx.WXK_RETURN:
            print("Return")
        e.Skip()


app = wx.App(False)
win = MainWindow(None)
app.MainLoop()
票数 3
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/20416650

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档