我正在尝试使用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
我该如何解决?在第一个按下的时间工作。
答案 0 :(得分:9)
请注意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
我同意文档是否含糊不清是否需要,但你需要返回True或False(或可能是任何整数值),任何“false”值(例如0)阻止事件,以便后续处理程序不会它。 (这使您可以有条件地吞下某些键击,如本教程的“事件过滤”部分所述。)
(这可能不像它看起来那么容易!:-))