【发布时间】:2021-08-11 15:47:15
【问题描述】:
我有一个程序,当用户第一次按下并按住一个键时打印经过的时间,并在释放键时再次打印。如果 5 秒后,用户在释放前按住键盘上的向上箭头 3 秒,程序应打印“0:05 response 1 ON”,然后打印“0:08 response 1 OFF”。我遇到的问题是按住按键寄存器作为多次按键,导致每秒打印多次时间。任何想法如何将按下并按住的键视为单次按键?
import time
from pynput import keyboard
from pynput.keyboard import Key, Listener
f = open("quick_data.txt", "a")
f.write(time.ctime() + "\n")
def show(key):
if key == keyboard.Key.enter:
global start
start = time.perf_counter()
if key == keyboard.Key.delete:
return False
if key == keyboard.Key.up:
elapsed = time.perf_counter()
x = time.gmtime(elapsed - start)
y = time.strftime('%M:%S', x)
f.write(str(y) + " response 1 ON" + "\n")
def on_release(key):
if key == keyboard.Key.up:
elapsed = time.perf_counter()
x = time.gmtime(elapsed - start)
y = time.strftime('%M:%S', x)
f.write(str(y) + " response 1 OFF" + "\n")
with keyboard.Listener(
on_press=show,
on_release=on_release) as listener:
listener.join()
【问题讨论】:
标签: python keyboard-events pynput