Какая клавиша нажимается на тексте события 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
Молодец!