Загрузка данных


import sys
from PyQt6.QtWidgets import (QApplication, QWidget, QVBoxLayout, 
                             QLineEdit, QPushButton, QTableWidget, 
                             QTableWidgetItem, QLabel, QHBoxLayout,
                             QMessageBox)

class EmployeeApp(QWidget):
    def __init__(self):
        super().__init__()
        self.setWindowTitle("Сотрудники")
        self.resize(500, 500)

        # Главный вертикальный слой
        layout = QVBoxLayout()

        # Поля ввода
        layout.addWidget(QLabel("ФИО:"))
        self.name_input = QLineEdit()
        layout.addWidget(self.name_input)

        layout.addWidget(QLabel("Должность:"))
        self.post_input = QLineEdit()
        layout.addWidget(self.post_input)

        layout.addWidget(QLabel("Год рождения:"))
        self.year_input = QLineEdit()
        layout.addWidget(self.year_input)

        # Горизонтальный слой для кнопок
        button_layout = QHBoxLayout()

        # Кнопка добавить
        self.add_btn = QPushButton("Добавить")
        button_layout.addWidget(self.add_btn)
        self.add_btn.clicked.connect(self.add_to_table)

        # Кнопка изменить
        self.edit_btn = QPushButton("Изменить")
        button_layout.addWidget(self.edit_btn)
        self.edit_btn.clicked.connect(self.edit_in_table)

        # Кнопка удалить
        self.del_btn = QPushButton("Удалить")
        button_layout.addWidget(self.del_btn)
        self.del_btn.clicked.connect(self.delete_from_table)

        layout.addLayout(button_layout)

        # Таблица
        self.table = QTableWidget()
        self.table.setColumnCount(3)
        self.table.setHorizontalHeaderLabels(["ФИО", "Должность", "Год рождения"])
        layout.addWidget(self.table)

        self.setLayout(layout)

    def add_to_table(self):
        # Получаем текст из полей
        name = self.name_input.text()
        post = self.post_input.text()
        year = self.year_input.text()

        if name and post and year:
            # Определяем номер новой строки
            row = self.table.rowCount()
            self.table.insertRow(row)

            # Записываем данные в ячейки
            self.table.setItem(row, 0, QTableWidgetItem(name))
            self.table.setItem(row, 1, QTableWidgetItem(post))
            self.table.setItem(row, 2, QTableWidgetItem(year))

            # Очищаем поля ввода
            self.name_input.clear()
            self.post_input.clear()
            self.year_input.clear()
            
            # Показываем сообщение об успехе
            QMessageBox.information(self, "Успех", "Сотрудник добавлен!")
        else:
            # Показываем сообщение об ошибке
            QMessageBox.warning(self, "Ошибка", "Заполните все поля!")

    def edit_in_table(self):
        # Получаем выбранную строку
        current_row = self.table.currentRow()
        
        if current_row >= 0:
            # Получаем новые данные из полей
            new_name = self.name_input.text()
            new_post = self.post_input.text()
            new_year = self.year_input.text()
            
            if new_name or new_post or new_year:
                if new_name:
                    self.table.setItem(current_row, 0, QTableWidgetItem(new_name))
                if new_post:
                    self.table.setItem(current_row, 1, QTableWidgetItem(new_post))
                if new_year:
                    self.table.setItem(current_row, 2, QTableWidgetItem(new_year))
                
                # Очищаем поля ввода
                self.name_input.clear()
                self.post_input.clear()
                self.year_input.clear()
                
                # Показываем сообщение об успехе
                QMessageBox.information(self, "Успех", "Данные изменены!")
            else:
                # Показываем сообщение об ошибке
                QMessageBox.warning(self, "Ошибка", "Введите новые данные!")
        else:
            # Показываем сообщение об ошибке
            QMessageBox.warning(self, "Ошибка", "Выберите строку для изменения!")

    def delete_from_table(self):
        # Получаем выбранную строку
        current_row = self.table.currentRow()
        
        if current_row >= 0:
            # Запрашиваем подтверждение
            reply = QMessageBox.question(
                self, 
                "Подтверждение", 
                "Удалить выбранного сотрудника?", 
                QMessageBox.StandardButton.Yes | QMessageBox.StandardButton.No
            )
            
            if reply == QMessageBox.StandardButton.Yes:
                # Удаляем строку из таблицы
                self.table.removeRow(current_row)
                
                # Показываем сообщение об успехе
                QMessageBox.information(self, "Успех", "Сотрудник удален!")
        else:
            # Показываем сообщение об ошибке
            QMessageBox.warning(self, "Ошибка", "Выберите строку для удаления!")

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