我想在按下“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(使用前将#替换为@)