重写wxPython中的KeyDown事件

2024-09-28 03:20:02 发布

您现在位置:Python中文网/ 问答频道 /正文

我编写了wxTreeCtrl,其中我只想处理65到90之间的键码(Ascii:A-Z)。 我不想自己处理其他的密码。在我处理了65到90之间的键之后,我如何能够中止我的事件并为wxTreeCtrl使用标准的“向下键”事件?在

类别定义:

class ConfigTreeCtrl(wx.TreeCtrl):

方法绑定:

^{pr2}$

方法定义:

def OnKeyDown(self, event):         
    now = time.time()  
    keyCode = event.GetKeyCode()
    if (keyCode >= 65 and keyCode <= 90) or ( keyCode >= 48 and keyCode <= 57):
        if self.searchString == "":
            self.searchString = chr(event.GetKeyCode())
        elif (now - self.lastKeyDown) < 2:
            self.searchString += str(chr(event.GetKeyCode()))
        else:
            self.searchString = str(chr(event.GetKeyCode()))
    self.lastKeyDown = now
    self.GetItem(self.searchString, self.GetRootItem())

谢谢你的帮助和问候

托马斯


Tags: and方法selfeventif定义time事件
1条回答
网友
1楼 · 发布于 2024-09-28 03:20:02

^{}在基wxWindows类或本机控件中进一步处理事件。因此,在你的方法中,应该引入如下内容:

def OnKeyDown(self, event):         
    now = time.time()  
    keyCode = event.GetKeyCode()
    if (keyCode >= 65 and keyCode <= 90) or ( keyCode >= 48 and keyCode <= 57):
        if self.searchString == "":
            self.searchString = chr(event.GetKeyCode())
        elif (now - self.lastKeyDown) < 2:
            self.searchString += str(chr(event.GetKeyCode()))
        else:
            self.searchString = str(chr(event.GetKeyCode()))
    else:
        event.Skip()
        return
    self.lastKeyDown = now
    self.GetItem(self.searchString, self.GetRootItem())

相关问题 更多 >

    热门问题