PyCharm не сбрасывает поток ввода - PullRequest
1 голос
/ 30 октября 2019

Я делаю интерфейс, где пользователю нужно нажать клавишу "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<
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...