如何在Python中使用pyHook将多个键绑定到不同的函数?

2024-10-01 02:25:19 发布

您现在位置:Python中文网/ 问答频道 /正文

我试图让我的程序使用不同的按键来执行两个名为“pauseinit”和“startinit”的函数,即使pythongui不是焦点,也可以检测到这两个函数。 我的代码是:

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”打印到控制台,但按Home键时“startint”根本不注册。有什么办法解决这个问题吗?谢谢。你知道吗


Tags: key函数selfeventifondefwatcher
1条回答
网友
1楼 · 发布于 2024-10-01 02:25:19

原来我只是个笨蛋。对于那些没有像我一样思考的人,我只是把第二个“如果”放进了“尝试”。你知道吗

    def on_keyboard_event(self, event):
    try:
        if event.KeyID  == 35:
            self.pauseinit()

        if event.KeyID == 36:
            self.startinit()
    finally:
        return True

相关问题 更多 >