Какая клавиша нажимается на тексте события wxpython

Я использую wx.TextCrtl bind to wx.EVT_TEXT для получения ввода от пользователя, но я не знаю, как определить, какая клавиша была нажата (я могу прочитать последний символ в строке, используя st[LengthOfString-1], но это не хорошо для ключей, которые не являются буквами (например, клавиша Backspace). Если я использую событие wx.EVT_KEY_DOWN, то я не могу видеть вставленные данные. Что я могу сделать, чтобы они оба были? Текстовое управление с опцией манипулировать строкой, а также возможность определять каждую клавишу при нажатии?

self.command_line = wx.TextCtrl(self.CommandLinePanel, -1, style = wx.TE_MULTILINE | wx.TE_PROCESS_ENTER)  # past: self.log.
        self.command_line.Bind(wx.EVT_TEXT, self.OnKeyCommandLine)

def OnKeyCommandLine(self, event):
    st = str(event.GetString())
    LengthOfSt = len(st)
    #...
    #my code
    #End of function

Как я могу добавить что-то вроде

self.command_line.Bind(wx.EVT_KEY_DOWN, self.OnKeyWhich)

def OnKeyWhich(self, evt):
    print "The key pressed: %s" % evt.GetKeyCode() 

и получить два события или, по крайней мере, результаты двух событий?

0 ответов

Надеюсь, это поможет:

# Define an event handler
self.Bind(wx.EVT_CHAR_HOOK, self.OnKeyWhich, self.command_line)

# Determine when user push RETURN (for example):
def OnKeyWhich(self, event): 
    key = event.GetKeyCode()                
    if key == wx.WXK_RETURN:
        self.update_result()
    else:
        event.Skip()

Вот список кодов клавиш: https://wxpython.org/Phoenix/docs/html/wx.KeyCode.enumeration.html

Молодец!

Другие вопросы по тегам