Я пытаюсь создать программу на Python, инициирующую отсчет наносекунд при нажатии клавиши на клавиатуре, останавливая ее при отпускании клавиши и вычисляя, как долго клавиша была нажата.
До сих пор я пробовал несколько разных структур, используя модули pynput и time. Я выпускаю приведенный ниже код неправильно, но я все равно добавляю его, чтобы кто-то потенциально мог указать мне правильное направление.
Когда я запускаю приведенный ниже код, он печатает время в наносекундах. Однако напечатанное время продолжает увеличиваться для каждой клавиши, которую я нажимаю, независимо от того, как долго я нажимаю клавишу. Кажется, метод: time.perf_counter_ns() не перестает считать, даже когда функциональный блок завершается и вызывается снова после этого.
import pynput, time
from pynput.keyboard import Key,Listener
timer = 0
timer2 = 0
def press(Key):
timer = time.perf_counter_ns()
def release(Key):
timer2 = time.perf_counter_ns()
print(timer-timer2)
with Listener(on_press=press, on_release=release) as listener:
listener.join()
print(timer)
вrelease()
, и вы увидите, что это всегда0
. Также ваша арифметика дает отрицательное число: вы должны поменять местами операнды. - person msanford   schedule 17.06.2020