У меня есть программа, которая печатает прошедшее время, когда пользователь впервые нажимает и удерживает клавишу, и снова печатает, когда клавиша отпущена. Если через 5 секунд пользователь нажимает и удерживает стрелку вверх на своей клавиатуре в течение 3 секунд, прежде чем отпустить, программа должна напечатать ответ 1 ON 0:05, а затем ответ 1 OFF 0:08. Проблема, с которой я сталкиваюсь, заключается в том, что удерживание клавиши регистрируется как несколько нажатий клавиш, в результате чего время печатается несколько раз в секунду. Любые идеи, как обрабатывать нажатие и удерживание клавиши как нажатие одной клавиши?
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()