Ошибка при компиляции программы на 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