Как дождаться выполнения других кодов и только потом запрашивать ввод с клавиатуры? - PullRequest
0 голосов
/ 19 мая 2019

Я пытаюсь попросить пользователя нажать определенную клавишу, которая затем выполнит что-то, но я не хочу, чтобы клавиша была записана, когда пользователь нажимает клавишу, прежде чем программа попросит пользователя ввести клавишу.Например:

from msvcrt import kbhit, getch
from time import sleep

#executing some_code1
sleep(1)
.
.
.
#executing some_code2
.
.
.
sleep(1)
print("Now you may press any key")

while True:
    if kbhit():
        #run code123

Если я запускаю это и нажимаю любую случайную клавишу до того, как программа выполнит эту функцию печати, сразу после функции печати программа выполнит code123.Я хочу, чтобы пользователь сначала прочитал вопрос, прежде чем что-либо нажимать.Есть ли способы сделать это с помощью модуля msvcrt?

Я уже пытался использовать что-то вроде флага, чтобы попытаться запустить код только после того, как все остальное будет сделано.Что-то вроде:

from msvcrt import kbhit, getch
from time import sleep

ok = False
#do stuff
sleep(2)
#do stuff
print("Now you may press any key")
ok = True

if ok:
    while True:
        if kbhit():
            print("did it work?")
            break

Я ожидаю, что программа будет ждать, пока не достигнет той части, где она зацикливается, до тех пор, пока пользователь не нажмет что-то, но похоже, что если пользователь нажимает что-то еще до запуска кода цикла, онкаким-то образом записывает нажатие клавиши пользователя и запускает код, следующий за kbhit (), сразу после того, как верхний код был сделан.

...