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"
Другие вопросы по тегам