@Yvesik

Как поставить цикл while на паузу с помощью keyboard?

Делаю небольшой кликер с залипанием клавиши для игры через библиотеку keyboard. Я столкнулся с такой проблемой, что не могу остановить цикл при нажатии на клавишу P-p с дальнейшим перезапуском.

Нужно, чтобы скрипт по нажатию на клавишу p приостанавливался на паузу и по нажатию клавиши l снова запускался.
import keyboard
import time

print('Start: l')
keyboard.wait('l') #Запустить цикл
while True:
    keyboard.press('w') #Клик
    if keyboard.is_pressed('p'): #Остановить цикл
       keyboard.wait('l') #Перезапустить цикл
  • Вопрос задан
  • 1335 просмотров
Пригласить эксперта
Ответы на вопрос 2
Vindicar
@Vindicar
RTFM!
Yvesik, ну если я верно понимаю API keyboard, твой скрипт должен работать. Вставь отладочный print() в цикл для проверки, ну и небольшой time.sleep() (миллисекунд так 50-100) может не помешает...
Правда, есть потенциальная проблемка, не связанная с твоим вопросом.
Метод press() посылает сигнал "клавиша нажата и удерживается". Он НЕ посылает последующий сигнал "клавиша отпущена".
Поэтому зацикливать его довольно-таки бессмысленно, после первого нажатия приложение может не отвечать на последующие, пока не получит сигнал "W отпущена". Если тебе нужно спамить нажатия W, а не держать кнопку, то нужно было смотреть в сторону send().
Ответ написан
Комментировать
@rPman
дальнейшим воспроизведением
постановка на паузу определяется тем что именно выполняется в цикле

у вас два варианта - асинхронный, когда все происходит в одном потоке, в этом случае необходимы методы определения, нажата ли кнопка (помещена ли она в клавиатурный буфер) без остановки выполнения, к сожалению это не кроссплатформенно, т.е. для каждой ос свой метод, для примера вот чей то gist

другой - многопоточный, в этом случае в одном потоке у вас висит ожидание нажатий клавиш, а в другом ваш главный цикл. этот вариант проще
Ответ написан
Комментировать
Ваш ответ на вопрос

Войдите, чтобы написать ответ

Похожие вопросы
28 нояб. 2024, в 05:21
2000 руб./за проект
28 нояб. 2024, в 05:18
500 руб./за проект
28 нояб. 2024, в 03:51
3500 руб./за проект