Я делаю интерфейс, где пользователю нужно нажать клавишу "enter
", когда он / она будет готова продолжить. Есть несколько шагов, так что это будет происходить несколько раз. Я хочу избежать ситуации, когда пользователь случайно нажимает «enter
», и следующий этап начинается слишком рано. Другими словами, я хочу очищать поток ввода каждый раз перед вопросом «Пожалуйста, нажмите Enter для продолжения». Я использую PyCharm 2018.3.7 (Community Edition, выпущена 9 июля 2019 года) в Windows 10.
После по этой ссылке Я создал следующий код.
import msvcrt
import time
def flush_input():
while msvcrt.kbhit():
aa = msvcrt.getch()
print("(Debug flush) Discarding character >%s<" % aa)
def main():
aa = input("Hit enter when you are ready to start.")
n = 5;
print("you typed >%s<" % aa)
time.sleep(n)
print("slept for %d seconds" % n)
flush_input()
bb = input("Type something and press return.")
print("you typed >%s<" % bb)
main()
Работает как положено в интерактивном режиме, запущенном с терминала без PyCharm, но ничего не сбрасывает при работе с консоли PyCharm. Как мне изменить код, чтобы он работал и в консоли PyCharm?
Результат в интерактивном режиме: >>>
- подсказка. На первый вопрос я набрал hjkl
и «enter». Во время сна я набрал dsafd
и «enter», а на последнем вопросе meh
и «enter»:
>>> main()
Hit enter when you are ready to start.hjkl
you typed >hjkl<
slept for 5 seconds
(Debug flush) Discarding character >b'd'<
(Debug flush) Discarding character >b's'<
(Debug flush) Discarding character >b'a'<
(Debug flush) Discarding character >b'f'<
(Debug flush) Discarding character >b'd'<
(Debug flush) Discarding character >b'\r'<
Type something and press return.meh
you typed >meh<
>>>
Результат в консоли PyCharm. Там нет подсказки. На первый вопрос я набрал hjkl
и «enter». Во время сна я набрал dsafd
и «enter», и последний вопрос, на который я так и не смог ответить:
Hit enter when you are ready to start.hjkl
you typed >hjkl<
dsafd
slept for 5 seconds
Type something and press return.you typed >dsafd<