В настоящее время у меня есть программа, которая открывается с меню, пользователь может выбрать опцию и перейти к этой функции. Однако, если в любой момент нажата клавиша Esc , она должна вернуться в предыдущее меню или полностью выйти из программы, если она находится в верхней части иерархии.
До сих пор у меня получилось, что если пользователь нажимает Esc , затем нажимает клавишу ввода, выходит из / или возвращается в предыдущее меню. Но я бы хотел сделать так, чтобы пользователю не приходилось нажимать клавишу ввода, только клавиша Esc . Я пытался использовать многопроцессорную библиотеку для создания процесса для основного кода, но это останавливает работу функции input()
для всех пользовательских данных, которые требуются моей программе.
def my_code():
while True:
print("a. do something\n")
print("b. do something\n")
print("c. do something\n")
print("d. do something\n")
print("e. do something\n")
print("f. do something\n")
print("g. do something\n")
choice = input("Please pick an option (a-g):")
if choice == 'a' or choice == 'A':
function_a()
if __name__ == '__main__':
p = multiprocessing.Process(target = my_code)
p.start()
if getch.getch() == '\x1b':
os.kill(p.pid, signal.SIGINT)
Фактическим результатом будет то, что если в любой точке нажата Esc , если она находится в этом меню, то программа должна выйти. Но когда я запускаю это, я получаю ошибку
choice = input("Please pick an option (a-g):")
EOFError: EOF when reading a line
Есть ли лучший способ реализовать это вместо создания потока multiprocessing
?