2010-06-15 6 views
4

Я пытаюсь создать глобальную горячую клавишу с pyhook в python, которая должна работать только с нажатой клавишей alt.Помощь с ошибкой pyHook

здесь источник:

import pyHook 
import pythoncom 

hm = pyHook.HookManager() 

def OnKeyboardEvent(event): 
    if event.Alt == 32 and event.KeyID == 49: 
     print 'HERE WILL BE THE CODE' 

hm.KeyDown = OnKeyboardEvent 
hm.HookKeyboard() 
pythoncom.PumpMessages() 

но когда я исполняю, работает только со вторым нажатием второго ключа (номер 1 = 49) ... и дать эту ошибку:

http://img580.imageshack.us/img580/1858/errord.png

Как его решить? Для работы при первом нажатии.

ответ

8

Примечание от tutorial, что вам нужно возвращать значение в конце обработчика:

def OnKeyboardEvent(event): 
    if event.Alt == 32 and event.KeyID == 49: 
     print 'HERE WILL BE THE CODE' 

    # return True to pass the event to other handlers 
    return True 

Я согласен, что это неоднозначный из документации того, что требуется, но вы должны вернуть Правда или Ложь (или возможно любое целочисленное значение), с любым «ложным» значением (например, 0), блокирующим событие таким образом, чтобы последующие обработчики не получали его. (Это позволяет глотать определенные комбинации клавиш условно, как и в разделе Фильтрация событий учебника.)

(Это было не так легко понять, как это могло бы выглядеть! :-))

+0

спасибо, обработанное отлично ... =) – Shady

Смежные вопросы