gpt4 book ai didi

python - 在 Python 的 For 循环中绑定(bind) keyboard.on_press_key

转载 作者:行者123 更新时间:2023-12-05 03:25:18 24 4
gpt4 key购买 nike

我想通过一个遍历字典项的 For 循环使用 Python 的键盘模块设置 on_press_key 绑定(bind)。但是,似乎没有正确分配绑定(bind)。

这是我编写的示例程序,演示了我可以绑定(bind)的两种方式。一种是通过循环,一种是手动逐个字符:

import keyboard
import time

shortcuts = {
"Key1":"a",
"Key2":"b",
"Key3":"c",
}

def showText(text):
print(text)

for text, hotkey in shortcuts.items():
keyboard.on_press_key(hotkey, lambda _:showText(text))

keyboard.on_press_key("d", lambda _:showText("Key4"))
keyboard.on_press_key("e", lambda _:showText("Key5"))

while 1:
time.sleep(1)

问题是通过循环完成的绑定(bind)返回“Key3”而不是它们各自的键。也就是说,如果我按“a”或“b”或“c”,它会打印“Key3”。但“d”返回“Key4”,“e”按预期返回“Key5”。

为什么绑定(bind)在 For 循环中没有按预期工作?有没有办法让它发挥作用?手动绑定(bind)每个键不仅乏味,而且在我稍后更新字典的情况下也为错误开辟了道路。

谢谢

最佳答案

@Aommaster 不知道是python的bug还是什么的。

代替 keyboard.on_press_key(hotkey, lambda _:showText(text)) 在循环中你可以创建一个函数并在循环中调用该函数,然后,它完美地工作。

import keyboard
import time

shortcuts = {
"Key1":"a",
"Key2":"b",
"Key3":"c",
}

def showText(text):
print(text)

def bind_key(hotkey,text):
keyboard.on_press_key(hotkey, lambda _:showText(text))
for text, hotkey in shortcuts.items():
bind_key(hotkey,text)

keyboard.on_press_key("d", lambda _:showText("Key4"))
keyboard.on_press_key("e", lambda _:showText("Key5"))
# you can also call these using function.
# bind_key("d","Key4")
# bind_key("e","Key5")

while 1:
time.sleep(1)

关于python - 在 Python 的 For 循环中绑定(bind) keyboard.on_press_key,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/72054530/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com