【问题标题】:Problem with key repeating when monitoring keypresses with pynput使用 pynput 监控按键时出现按键重复的问题
【发布时间】:2021-10-29 12:53:05
【问题描述】:

我正在制作这个小程序,只要按下某个键就会播放声音,但是当我按住任何按钮时,它就会开始重复发出声音。我想知道的是如何做到这一点,当我按住一个键时,它会播放一次声音并且不会重复。

def on_press(key):
    sound = random.choice(songlist)
    pygame.mixer.music.load(song)
    pygame.mixer.music.play(loops=0)

问题是它在按钮按下时播放声音。但我不知道如何使用它。

【问题讨论】:

  • 您似乎可以添加一个名为is_pressed 之类的全局布尔字典,该字典由key 键入,在on_press 方法中将is_pressed[ key ] 设置为True。然后在on_release 方法中将其设置为False。在on_press 方法的开头,您然后检查is_pressed[ key ] 是否为True,如果是则返回函数,

标签: python pynput


【解决方案1】:

这是我发现的一种解决方案,你也许可以摆脱一个全局变量,但我没有想太多。

import pynput

keyboard = pynput.keyboard

active_key = None
active = False

def on_release(key):
    global active_key, active
    if active_key == key:
        active = False
        active_key = None

def on_press(key):
    global active_key, active
    active_key = key
    if not active:
        print(key)
        # play your sound here
    active = True

with keyboard.Listener(on_press=on_press, on_release=on_release) as listner:
    listner.join()

【讨论】:

    猜你喜欢
    • 2019-10-06
    • 2020-05-24
    • 2022-12-25
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-04-19
    • 2019-12-07
    • 1970-01-01
    相关资源
    最近更新 更多