В настоящее время у меня есть программа, которая открывается с меню, пользователь может выбрать параметр и перейти к этой функции. Однако, если в какой-либо момент нажать клавишу Esc, она должна вернуться в предыдущее меню или полностью выйти из программы, если она находится на вершине иерархии.
До сих пор у меня это работало, если пользователь нажимает Esc, затем нажимает Enter, он выходит/или возвращается в предыдущее меню. Но я хотел бы сделать так, чтобы пользователю не приходилось нажимать только клавишу 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
?