Добавлена обработка сигнала выхода из программы

This commit is contained in:
2026-07-24 00:57:21 +05:00
parent 901a5e5c7b
commit 4cd38048d7
+41 -26
View File
@@ -2,8 +2,11 @@
""" """
Главное меню программы. Главное меню программы.
Загружает проект при старте и предоставляет доступ ко всем подменю. Загружает проект при старте и предоставляет доступ ко всем подменю.
Обрабатывает прерывание Ctrl+C для корректного выхода.
""" """
from core.fs import load_project
import sys
from core.fs import load_project, save_project_partial
from editor import editor_menu from editor import editor_menu
from plan import plan_menu from plan import plan_menu
from response import response_menu from response import response_menu
@@ -15,33 +18,45 @@ PROJECT_FILE = "project.json"
def main(): def main():
mixture, design, responses = load_project(PROJECT_FILE) mixture, design, responses = load_project(PROJECT_FILE)
while True: try:
print("\n" + "=" * 50) while True:
print("ГЛАВНОЕ МЕНЮ") print("\n" + "=" * 50)
print("1. Редактор состава") print("ГЛАВНОЕ МЕНЮ")
print("2. Планирование эксперимента") print("1. Редактор состава")
print("3. Ввод значений отклика") print("2. Планирование эксперимента")
print("4. Анализ значений") print("3. Ввод значений отклика")
print("5. Крутое восхождение") print("4. Анализ значений")
print("6. Выход") print("5. Крутое восхождение")
print("=" * 50) print("6. Выход")
choice = input("Выберите пункт: ").strip() print("=" * 50)
choice = input("Выберите пункт: ").strip()
if choice == "6": if choice == "6":
print("До свидания! (данные не сохранены автоматически)") print("До свидания! (данные не сохранены автоматически)")
break break
elif choice == "1": elif choice == "1":
editor_menu(mixture) editor_menu(mixture)
elif choice == "2": elif choice == "2":
design = plan_menu(mixture, design) design = plan_menu(mixture, design)
elif choice == "3": elif choice == "3":
responses = response_menu(design, responses) responses = response_menu(design, responses)
elif choice == "4": elif choice == "4":
analysis_menu(mixture, design, responses) analysis_menu(mixture, design, responses)
elif choice == "5": elif choice == "5":
ascent_menu(mixture, design, responses) ascent_menu(mixture, design, responses)
else:
print("Неверный пункт.")
except KeyboardInterrupt:
print("\n\nОбнаружено прерывание (Ctrl+C).")
# Спрашиваем, хочет ли пользователь сохранить текущий проект
save_choice = input("Сохранить текущий проект перед выходом? (y/n, Enter = нет): ").strip().lower()
if save_choice == 'y':
save_project_partial(PROJECT_FILE, mixture, design, responses)
print("Проект сохранён.")
else: else:
print("Неверный пункт.") print("Выход без сохранения.")
print("До свидания!")
sys.exit(0)
if __name__ == "__main__": if __name__ == "__main__":
main() main()