2009-11-11 1 views
0

J'écris une application wxPython dans laquelle je veux (pour le moment) imprimer le nom de la touche qui a été pressée. J'ai un dictionnaire qui mappe, par exemple, le WXK_BACK à "back" qui semble sain d'esprit. Cependant, quel fichier dois-je importer (inclure?) Pour obtenir la définition de WXK_BACK?wxPython wx.KeyEvent GetKeyCode()

J'ai la déclaration import wx, mais je ne suis pas certain quel fichier spécifique détient les secrets

Répondre

3

Tous les noms clés peuvent être utilisés directement après le module importation wx par exemple

>>> import wx 
>>> wx.WXK_BACK 
8 

aussi vous n'avez pas besoin de génération de clé à la carte du nom à la main, vous générez keycode à la cartographie de nom automatiquement par exemple

import wx 

keyMap = {} 
for varName in vars(wx): 
    if varName.startswith("WXK_"): 
     keyMap[varName] = getattr(wx, varName) 

print keyMap 

Puis, en OnChar vous pouvez juste faire

def OnChar(self, evt): 
    try: 
     print keyMap[evt.GetKeyCode()] 
    except KeyError: 
     print "keycode",evt.GetKeyCode(), "not found" 
+0

Merci! C'est plus facile, ET j'ai appris quelque chose. J'apprécie votre aide. : bp: –

0

Vous ne devez importer WX pour le symbole WXK_BACK. Le code qui ressemble à quelque chose comme ceci devrait fonctionner.

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" 
+0

Merci! Je suis encore un peu nouveau sur ce python/wxpython, et le wx. préfixe m'a échappé. (J'utilisais WXK_BACK plutôt que wx.WXK_BACK). Merci beaucoup pour votre aide. : bp: –

+0

De rien. – tom10