2017-05-29 4 views
0

Je suis en train de faire mon programme pour exécuter deux fonctions appelées « pauseinit » et « startinit » en utilisant différents appuis de touches qui peuvent être détectés même si une interface graphique python est pas le focus. Mon code lit:Comment lier plusieurs clés à différentes fonctions à l'aide pyHook en Python?

class Keystroke_Watcher(object): 
    def __init__(self): 
     self.hm = HookManager() 
     self.hm.KeyDown = self.on_keyboard_event 
     self.hm.HookKeyboard() 


    def on_keyboard_event(self, event): 
     try: 
      if event.KeyID == 35: #End key 
       self.pauseinit() 
     finally: 
      return True 
     try: 
      if event.KeyID == 36: #Home key 
       self.startinit() 
     finally: 
      return True 

     def pauseinit(self): 
      print "pausing" 

     def startinit(self): 
      print "starting" 

     def shutdown(self): 
      PostQuitMessage(0) 
      self.hm.UnhookKeyboard() 

watcher = Keystroke_Watcher() 
PumpMessages() 

La fonction « pauseinit » fonctionne très bien et imprime « pause » à la console mais « startint » n'enregistre pas du tout apon en appuyant sur la touche Home. Des idées sur la façon de résoudre cela? Merci.

Répondre

0

Je suis sur Transforme tout simplement stupide. Pour ceux qui ne pense pas à travers comme je l'ai fait, je viens de mettre la deuxième « si » dans le « essayer ».

def on_keyboard_event(self, event): 
    try: 
     if event.KeyID == 35: 
      self.pauseinit() 

     if event.KeyID == 36: 
      self.startinit() 
    finally: 
     return True