wxPython wx.KeyEvent GetKeyCode()
Я пишу приложение wxPython, в котором я хочу (на данный момент) напечатать название нажатой клавиши. У меня есть словарь, который отображает, например, WXK_BACK на "назад", что кажется нормальным. Однако какой файл я должен импортировать (включить?), Чтобы получить определение WXK_BACK?
у меня есть import wx
Скажите, но не уверен, какой конкретный файл содержит секреты
2 ответа
Решение
Все имена ключей могут быть непосредственно использованы после импорта wx
модуль например
>>> import wx
>>> wx.WXK_BACK
8
Кроме того, вам не нужно создавать ключ для сопоставления имен вручную, вы автоматически генерируете код для сопоставления имен, например
import wx
keyMap = {}
for varName in vars(wx):
if varName.startswith("WXK_"):
keyMap[varName] = getattr(wx, varName)
print keyMap
Тогда в OnChar вы можете просто сделать это
def OnChar(self, evt):
try:
print keyMap[evt.GetKeyCode()]
except KeyError:
print "keycode",evt.GetKeyCode(), "not found"
Вам нужно только импортировать wx для символа WXK_BACK. Код, который выглядит примерно так, должен работать.
import wx
class MyClass( wx.Window ):
def __init__(self):
self.Bind(wx.EVT_CHAR, self.OnChar)
def OnChar(self, evt):
x = evt.GetKeyCode()
if x==wx.WXK_BACK:
print "back"