解决 pyHook 错误的帮助

4 投票
1 回答
2046 浏览
提问于 2025-04-16 00:01

我正在尝试用Python中的pyhook库创建一个全局热键,这个热键应该只在按下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

注意,来自这个教程的提示,你的处理函数最后需要有一个返回值:

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(或者可能是任何整数值)。如果返回的是“假”的值(比如0),那么这个事件就会被阻止,后面的处理函数就收不到这个事件了。(这让你可以根据条件来屏蔽某些按键,就像教程里的事件过滤部分所说的那样。)

(这其实并没有看起来那么简单!:-))

撰写回答