1
我寫wxTreeCtrl,我只希望65和90(ASCII:A-Z)之間的處理鍵碼。 我不想自己處理任何其他鍵碼。我處理65和90之間的鑰匙後,我怎麼能放棄我的事件,並使用標準「鍵按下」 -event爲wxTreeCtrl?重寫keydown事件在wxPython中
類定義:
class ConfigTreeCtrl(wx.TreeCtrl):
方法結合:
self.Bind(wx.EVT_KEY_DOWN, self.OnKeyDown, self)
方法定義:
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())
感謝您的幫助和問候
托馬斯
我已經試過這個。當我輸入字符時,選擇更改正常工作。但是當我按下箭頭鍵時,會出現一個非常奇怪的行爲。當我在else語句中引發異常時,樹的行爲就像我想要的那樣。看來我必須中止我的事件處理。 – Thomas 2012-02-27 10:52:41
然後你可以event.Skip後只返回,看到編輯 – 2012-02-28 03:59:40
非常感謝。現在它工作正常;) – Thomas 2012-02-28 07:24:17