Я пытаюсь попросить пользователя нажать определенную клавишу, которая затем выполнит что-то, но я не хочу, чтобы клавиша была записана, когда пользователь нажимает клавишу, прежде чем программа попросит пользователя ввести клавишу.Например:
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 (), сразу после того, как верхний код был сделан.