обнаружить отпускание клавиши при использовании модуля клавиатуры - PullRequest
0 голосов
/ 30 сентября 2018

Предупреждение: мой английский отстой, а также я действительно новичок в python
Итак, я делаю программу, которая требует определенного нажатия клавиши (например, пробел) для продолжения цикла, например:
for i in *some sort of list*: print(something) *waits for a key*
и мой метод для последней строки - это модуль клавиатуры (не из pynput), который имеет функцию is_pressed.Когда я нажал клавишу, я получил вывод:
*something* *something* *something* *repeats for several times* Я знаю, что функция обнаруживает нажатие клавиши вместо нажатие и отпускание , поэтому этот вывод прекращается, как толькоЯ отпускаю это.Но это не так, как работает моя программа.Он должен отвечать каждый раз, когда я отпускаю этот ключ.К сожалению, я не смог найти функцию с именем is_released или что-то еще, и модуль pynput не может получить нажатую клавишу, используя Listener.По крайней мере, я не могу.

Кроме того, есть ли способ импортировать как keyboard, так и pynput в компьютер?Мой код VS игнорирует keyboard, когда установлено pynput.

Редактировать : это мое решение проблемы, но это супер-дамп:
while True: if keyboard.is_pressed('space'): while True: if not keyboard.is_pressed('space'): break break Есть лифункция, которая делает то же самое?

1 Ответ

0 голосов
/ 30 сентября 2018

Поскольку он обнаруживает только нажатие клавиш, используйте флаги.Я думаю, что-то вроде этого может сделать это: 1. Сделать переменную bool для обнаружения нажатия одной клавиши 2. Если нажата клавиша, bool будет установлен в true 3. Если bool имеет значение true, а не key.is_pressed: сделайте свое дело4. Установите для bool значение false после операции

Например, в коде это будет выглядеть так:

keypress = False
key = 'space'
while True:
    if keypress and not keyboard.is_pressed(key):
        '''DO YOUR THING'''
        #beak out of while loop?
        keypress = False
        break
    elif keyboard.is_pressed(key) and not keypress:
        keypress = True

Не знаю, так ли это, как вы это сделаете, но я думаю,Вы можете получить мой дрейф от этого.Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...