首页 > 解决方案 > 如何清除键盘事件缓冲区 pynput.keyboard

问题描述

我有一个名为on_press. 但是,如果用户不断敲击按键,键盘事件缓冲区队列会变得非常大,并且即使在用户停止按键之后,我的函数(需要数百毫秒)也会被调用。我该如何解决这个问题?

from pynput import keyboard

def f1():
    print("starting f1()..")
    # f1 takes time to finish

def on_press(key):
    print("pressed some key")
    f1()

with keyboard.Listener(on_press=on_press) as listener:
    listener.join()

标签: pythonpynput

解决方案


您可以创建一个队列来存储传入的键盘键,并且仅在它为空时添加到它,如下所示:

from pynput import keyboard
from queue import Queue

queue = Queue()

def on_press(key):
    if queue.empty():
        queue.put(key)

listener = keyboard.Listener(on_press=on_press)
listener.start()

while True:
    key = queue.get()
    f1()

推荐阅读