Ошибка при компиляции программы на Python c использованием библиотеки PyQT6

При компиляция программы на Python с использованием PyQT возникает ошибка Process finished with exit code -1073740791 (0xC0000409)

Файл main.py

import sys
from PyQt5.QtWidgets import QApplication
from gui import MainWindow


if __name__ == "__main__":
    app = QApplication(sys.argv)
    window = MainWindow()
    window.show()
    sys.exit(app.exec_())

Файл gui.py

import sys
from PyQt6.QtWidgets import QApplication, QMainWindow, QWidget, QVBoxLayout, QHBoxLayout, QLabel, QLineEdit, QPushButton, QListWidget, QMessageBox
from PyQt6.QtCore import Qt

from backend import Menu, Dish


class MainWindow(QMainWindow):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Меню")

        self.menu = Menu("data.txt")

        # Создаем главный виджет и вертикальный layout для него
        central_widget = QWidget()
        central_layout = QVBoxLayout()
        central_widget.setLayout(central_layout)
        self.setCentralWidget(central_widget)

        # Создаем label и lineEdit для ввода названия блюда
        name_label = QLabel("Название блюда:")
        self.name_input = QLineEdit()
        central_layout.addWidget(name_label)
        central_layout.addWidget(self.name_input)

        # Создаем label и lineEdit для ввода цены блюда
        price_label = QLabel("Цена (руб.):")
        self.price_input = QLineEdit()
        central_layout.addWidget(price_label)
        central_layout.addWidget(self.price_input)

        # Создаем label и lineEdit для ввода калорийности блюда
        cal_label = QLabel("Калорийность:")
        self.cal_input = QLineEdit()
        central_layout.addWidget(cal_label)
        central_layout.addWidget(self.cal_input)

        # Создаем кнопку для добавления блюда
        add_button = QPushButton("Добавить блюдо")
        add_button.clicked.connect(self.add_dish)
        central_layout.addWidget(add_button)

        # Создаем кнопку для удаления блюда
        self.delete_button = QPushButton("Удалить блюдо")
        self.delete_button.clicked.connect(self.delete_dish)
        central_layout.addWidget(self.delete_button)

        # Создаем список блюд
        self.dish_list = QListWidget()
        self.dish_list.setSelectionMode(QListWidget.SingleSelection)
        self.dish_list.itemSelectionChanged.connect(self.update_selected_item)
        central_layout.addWidget(self.dish_list)

        # Создаем label для вывода общей стоимости и калорийности
        self.total_label = QLabel("")
        central_layout.addWidget(self.total_label)

        # Загружаем список блюд в список
        self.load_dishes()

        # Очищаем поля ввода
        self.name_input.setText("")
        self.price_input.setText("")
        self.cal_input.setText("")

    def load_dishes(self):
        # Очищаем список блюд
        self.dish_list.clear()

        # Загружаем список блюд из файла
        with open(self.menu.file_path, "r") as f:
            for line in f:
                name, price, cal = line.strip().split(",")
                self.menu.add_dish(Dish(name, int(price), int(cal)))

        # Добавляем блюда в список на форме
        for dish in self.menu.dishes:
            self.dish_list.addItem(dish.name)

        # Обновляем общую стоимость и калорийность
        self.update_total()

    def update_total(self):
        total_price = sum([dish.price for dish in self.menu.cart])
        total_calories = sum([dish.calories for dish in self.menu.cart])
        self.total_label.setText(f"Общая стоимость: {total_price} руб.\nОбщая калорийность: {total_calories} кКал")

    def add_dish(self):
        name = self.name_input.text()
        price = self.price_input.text()
        cal = self.cal_input.text()

        if not name or not price or not cal:
            msg_box = QMessageBox()
            msg_box.setText("Введите все данные о блюде.")
            msg_box.exec_()
            return

        dish = Dish(name, float(price), int(cal))
        self.menu.add_dish(dish)

        self.dish_list.addItem(dish.name)

        self.update_total()

        self.name_input.setText("")
        self.price_input.setText("")
        self.cal_input.setText("")

    def delete_dish(self):
        selected = self.dish_list.currentRow()
        if selected < 0:
            msg_box = QMessageBox()
            msg_box.setText("Выберите блюдо для удаления.")
            msg_box.exec_()
            return

        dish_name = self.dish_list.item(selected).text()
        self.menu.remove_dish(dish_name)
        self.dish_list.takeItem(selected)

        self.update_total()

Файл backend.py

class Dish:
    def __init__(self, name, price, cal):
        self.name = name
        self.price = price
        self.cal = cal

    def __str__(self):
        return f"{self.name} ({self.price:.2f} руб., {self.cal} кал.)"


class Menu:
    def __init__(self, file_path):
        self.file_path = file_path
        self.dishes = []
        self.load_dishes()

    def load_dishes(self):
        with open(self.file_path, "r") as f:
            # Читаем каждое блюдо из файла и добавляем его в список блюд
            for line in f:
                name, price, cal = line.strip().split(",")
                price = float(price)
                cal = int(cal)
                dish = Dish(name, price, cal)
                self.dishes.append(dish)

    def save_dishes(self):
        with open(self.file_path, "w") as f:
            # Записываем каждое блюдо из списка блюд в файл
            for dish in self.dishes:
                line = f"{dish.name},{dish.price:.2f},{dish.cal}\n"
                f.write(line)

    def add_dish(self, name, price, cal):
        # Создаем новое блюдо и добавляем его в список блюд
        dish = Dish(name, price, cal)
        self.dishes.append(dish)

        # Сохраняем список блюд в файл
        self.save_dishes()

    def delete_dish(self, index):
        # Удаляем блюдо из списка блюд по индексу
        dish = self.dishes.pop(index)

        # Сохраняем список блюд в файл
        self.save_dishes()

        # Возвращаем удаленное блюдо
        return dish

Ответы (0 шт):