Помогите с ошибкой pyHook - PullRequest
4 голосов
/ 16 июня 2010

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

вот источник:

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

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

1 Ответ

9 голосов
/ 16 июня 2010

Обратите внимание, из учебника , что вам нужно возвращаемое значение в конце вашего обработчика:

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

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

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

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...