Я написал wxTreeCtrl, где я хочу обрабатывать коды ключей между 65 и 90 (Ascii: A-Z). И я не хочу обрабатывать любые другие коды ключей самостоятельно. После того как я обработал ключи между 65 и 90, как я могу прервать свое событие и использовать стандартный «ключ вниз» -эвенд для 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
Тогда вы можете просто вернуться после event.Skip, см. Редактирование –
Большое спасибо. Теперь он работает нормально;) – Thomas