按下某个键时仅增加 1

2024-04-17

我想在按下“s”键时将变量“shot_pressed”增加一,无论我按下多长时间。但结果是变量不断增大。我按下的时间越长,变量的值就越大。下面是我的代码的一部分。

import keyboard

shot_pressed = 0

if keyboard.is_pressed('s'):
    shot_pressed += 1

首先看起来你使用https://pypi.python.org/pypi/keyboard https://pypi.python.org/pypi/keyboard

其次,我假设你的代码不像你上面写的那样,而是像

import keyboard

shot_pressed = 0

while True:
    if keyboard.is_pressed('s'):
        shot_pressed += 1
        print("shot_pressed %d times"%shot_pressed)

如果是,这就是问题的核心:当按键被按下时,is_pressed 将始终为 True。所以if条件将为 True 并且while会重复很多次。

有两种方法可以解决这个问题。

1)使用相同的方法,但检查这是否是第一个 is_pressed 时刻,因此引入was_pressed多变的:

import keyboard

shot_pressed = 0
was_pressed = False

while True:
    if keyboard.is_pressed('s'):
        if not was_pressed:
            shot_pressed += 1
            print("shot_pressed %d times"%shot_pressed)
            was_pressed = True
    else:
        was_pressed = False

2)更好地利用图书馆。您可以设置一个钩子,以便在按下按键时调用您的函数(按一次仅调用一次)。所以代码将如下所示:

import keyboard

shot_pressed = 0

def on_press_reaction(event):
    global shot_pressed
    if event.name == 's':
        shot_pressed += 1
        print("shot_pressed %d times"%shot_pressed)

keyboard.on_press(on_press_reaction)

while True:
    pass
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

按下某个键时仅增加 1 的相关文章

随机推荐