Python - реагировать на пользовательское прерывание клавиатуры - PullRequest
0 голосов
/ 21 мая 2010

Я пишу python chatbot, который отображает вывод через консоль. Каждые полсекунды он запрашивает обновления у сервера и отвечает на сообщение. В консоли я вижу журнал чата.

В большинстве случаев этого достаточно, однако иногда я хочу прервать обычный рабочий процесс и написать собственный ответ в чате. Я хотел бы иметь возможность нажать кнопку (или комбинацию), которая переключится в «режим пользовательского ответа». Каков наилучший способ сделать это или достичь аналогичного результата?

Большое спасибо!

Ответы [ 2 ]

1 голос
/ 22 декабря 2015

Учитывая комментарии в предыдущем ответе, вам нужна неблокирующая функция, чтобы определить, были ли нажаты какие-либо клавиши, а не что-то, что срабатывает сразу после нажатия клавиши.

Поэтому я бы рекомендовал использовать некоторые из терминальных API, доступных в вашей ОС. Обычно это ругательства или консольный API win32. Тем не менее, я написал общую оболочку для обоих в asciimatics . Метод get_event() в Screen должен обеспечить простой кроссплатформенный способ получения событий мыши и клавиатуры. Чтобы узнать, было ли это событием клавиатуры, проверьте тип возвращаемого события. Если события не было, вы получите код возврата None, но если это была нажатая клавиша, вы получите KeyboardEvent.

1 голос
/ 21 мая 2010

Использование select.select() на sys.stdin позволит вам проверить, была ли нажата клавиша на терминале.

...