wxPython wx.KeyEvent GetKeyCode()

时间:2009-11-11 15:43:11

标签: wxpython keypress

我正在编写一个wxPython应用程序,我希望(此刻)打印已按下的键的名称。我有一本字典,例如,将WXK_BACK映射到“背面”,这似乎是理智的。但是,我必须导入哪个文件(包括?)才能获得WXK_BACK的定义?

我有import wx语句,但不确定哪个特定文件包含秘密

2 个答案:

答案 0 :(得分:3)

导入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"

答案 1 :(得分:0)

您只需要为WXK_BACK符号导入wx。看起来像下面这样的代码应该有用。

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"