python - 如何清除键盘事件缓冲区 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()
解决方案
您可以创建一个队列来存储传入的键盘键,并且仅在它为空时添加到它,如下所示:
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()
推荐阅读
- github - 即使作业被取消,如何在作业结束时运行脚本?
- excel - 如何使excel循环回0并在超过一定数量时继续计数?
- github - 有没有办法在 GitHub 上的文件中添加自定义“徽章”?
- powershell - 导入多个版本的 Powershell 模块会全部加载它们吗?
- r - R通过data.frames列表映射并更改列类型
- .net-core - TransactionScope:具有不同数据库连接的嵌套事务(SQL Server & Postgresql)
- java - SpringBoot - activiti - 获取 ProcessVariables
- android - 如何一次发送recyclerview项目的事件
- r - 如何根据两个 ID 传播数据并用对应列的响应填充新列
- sapui5 - 从 MessageManger 获取错误以供查看