小编Ptm*_*lol的帖子

如何检测 Windows python3+ 中的组合键?

我正在尝试编写一些程序来检测何时按下组合键并调用某个函数。所以我需要程序在按下时检测类似 ctrl+v 的内容并执行某些操作,但程序似乎无法同时识别 ctrl+v,但当我只测试 1 个键时它会识别:

COMBINATION = [
    {keyboard.Key.ctrl, keyboard.KeyCode(char='v')}
]
Run Code Online (Sandbox Code Playgroud)

在这段代码中,如果我删除 2 个中的 1 个,程序似乎会检测到密钥,但如果它们在一起,则不会。这就是我用来检测密钥的方法:

def on_press(key):
    if any([key in COMBO for COMBO in COMBINATION]):
        current.add(key)
        if any(all(k in current for k in comb) for comb in COMBINATION):
            execute()
Run Code Online (Sandbox Code Playgroud)

execute()如果两个参数都被放入,该函数永远不会被执行COMBINATION,但如果只有一个参数,它似乎确实有效。我使用 pynput 来表示按下的按键,并使用一个侦听器来监听所有按下的按键:

with keyboard.Listener(on_press=on_press, on_release=on_release) as listener:
    listener.join()
Run Code Online (Sandbox Code Playgroud)

谢谢!

python keyboard pynput

0
推荐指数
1
解决办法
3928
查看次数

标签 统计

keyboard ×1

pynput ×1

python ×1