如何在Python中使用pyHook将多个键绑定到不同的功能?
How to bind multiple keys to different functions using pyHook in Python?
我正在尝试让我的程序使用不同的按键执行两个名为 "pauseinit" 和 "startinit" 的函数,即使 python GUI 不是焦点,也可以检测到.
我的代码是:
class Keystroke_Watcher(object):
def __init__(self):
self.hm = HookManager()
self.hm.KeyDown = self.on_keyboard_event
self.hm.HookKeyboard()
def on_keyboard_event(self, event):
try:
if event.KeyID == 35: #End key
self.pauseinit()
finally:
return True
try:
if event.KeyID == 36: #Home key
self.startinit()
finally:
return True
def pauseinit(self):
print "pausing"
def startinit(self):
print "starting"
def shutdown(self):
PostQuitMessage(0)
self.hm.UnhookKeyboard()
watcher = Keystroke_Watcher()
PumpMessages()
"pauseinit" 函数工作正常并向控制台打印 "pausing" 但 "startint" 在按下 Home 键时根本没有注册。关于如何解决这个问题的任何想法?谢谢
原来我是个笨蛋。对于那些没有像我一样考虑清楚的人,我只是把第二个 'if' 放到 'try'.
def on_keyboard_event(self, event):
try:
if event.KeyID == 35:
self.pauseinit()
if event.KeyID == 36:
self.startinit()
finally:
return True
我正在尝试让我的程序使用不同的按键执行两个名为 "pauseinit" 和 "startinit" 的函数,即使 python GUI 不是焦点,也可以检测到. 我的代码是:
class Keystroke_Watcher(object):
def __init__(self):
self.hm = HookManager()
self.hm.KeyDown = self.on_keyboard_event
self.hm.HookKeyboard()
def on_keyboard_event(self, event):
try:
if event.KeyID == 35: #End key
self.pauseinit()
finally:
return True
try:
if event.KeyID == 36: #Home key
self.startinit()
finally:
return True
def pauseinit(self):
print "pausing"
def startinit(self):
print "starting"
def shutdown(self):
PostQuitMessage(0)
self.hm.UnhookKeyboard()
watcher = Keystroke_Watcher()
PumpMessages()
"pauseinit" 函数工作正常并向控制台打印 "pausing" 但 "startint" 在按下 Home 键时根本没有注册。关于如何解决这个问题的任何想法?谢谢
原来我是个笨蛋。对于那些没有像我一样考虑清楚的人,我只是把第二个 'if' 放到 'try'.
def on_keyboard_event(self, event):
try:
if event.KeyID == 35:
self.pauseinit()
if event.KeyID == 36:
self.startinit()
finally:
return True