解决 pyHook 错误的帮助
我正在尝试用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),那么这个事件就会被阻止,后面的处理函数就收不到这个事件了。(这让你可以根据条件来屏蔽某些按键,就像教程里的事件过滤部分所说的那样。)
(这其实并没有看起来那么简单!:-))