Загрузка данных
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())