import sys from PyQt6.QtWidgets import ( QApplication, QWidget, QVBoxLayout, QHBoxLayout, QLineEdit, QPushButton, QTableWidget, QTableWidgetItem, QLabel ) from bd import get_connection class SportApp(QWidget): def __init__(self): super().__init__() self.selected_id = None self.setWindowTitle("Спортивные организации города") self.setGeometry(200, 200, 900, 500) self.init_ui() self.load_data() def init_ui(self): layout = QVBoxLayout() # ===== Поля ввода ===== self.name_input = QLineEdit() self.address_input = QLineEdit() self.sport_input = QLineEdit() self.phone_input = QLineEdit() layout.addWidget(QLabel("Название")) layout.addWidget(self.name_input) layout.addWidget(QLabel("Адрес")) layout.addWidget(self.address_input) layout.addWidget(QLabel("Вид спорта")) layout.addWidget(self.sport_input) layout.addWidget(QLabel("Телефон")) layout.addWidget(self.phone_input) # ===== Кнопки ===== btn_layout = QHBoxLayout() self.add_btn = QPushButton("Добавить") self.update_btn = QPushButton("Изменить") self.delete_btn = QPushButton("Удалить выбранную") self.add_btn.clicked.connect(self.add_org) self.update_btn.clicked.connect(self.update_org) self.delete_btn.clicked.connect(self.delete_org) btn_layout.addWidget(self.add_btn) btn_layout.addWidget(self.update_btn) btn_layout.addWidget(self.delete_btn) layout.addLayout(btn_layout) # ===== Таблица ===== self.table = QTableWidget() self.table.setColumnCount(5) self.table.setHorizontalHeaderLabels( ["ID", "Название", "Адрес", "Спорт", "Телефон"] ) self.table.itemClicked.connect(self.row_selected) layout.addWidget(self.table) self.setLayout(layout) # ===== Загрузка данных ===== def load_data(self): conn = get_connection() cur = conn.cursor() cur.execute(""" SELECT id, name, address, sport_type, phone FROM sport_organizations ORDER BY id """) rows = cur.fetchall() cur.close() conn.close() self.table.setRowCount(len(rows)) for i, row in enumerate(rows): for j, value in enumerate(row): self.table.setItem(i, j, QTableWidgetItem(str(value))) # ===== Выбор строки ===== def row_selected(self): row = self.table.currentRow() self.selected_id = int(self.table.item(row, 0).text()) self.name_input.setText(self.table.item(row, 1).text()) self.address_input.setText(self.table.item(row, 2).text()) self.sport_input.setText(self.table.item(row, 3).text()) self.phone_input.setText(self.table.item(row, 4).text()) # ===== Добавление ===== def add_org(self): conn = get_connection() cur = conn.cursor() cur.execute(""" INSERT INTO sport_organizations (name, address, sport_type, phone) VALUES (%s, %s, %s, %s) """, ( self.name_input.text(), self.address_input.text(), self.sport_input.text(), self.phone_input.text() )) conn.commit() cur.close() conn.close() self.load_data() # ===== Обновление ===== def update_org(self): if self.selected_id is None: return conn = get_connection() cur = conn.cursor() cur.execute(""" UPDATE sport_organizations SET name=%s, address=%s, sport_type=%s, phone=%s WHERE id=%s """, ( self.name_input.text(), self.address_input.text(), self.sport_input.text(), self.phone_input.text(), self.selected_id )) conn.commit() cur.close() conn.close() self.load_data() # ===== Удаление ===== def delete_org(self): if self.selected_id is None: return conn = get_connection() cur = conn.cursor() cur.execute( "DELETE FROM sport_organizations WHERE id=%s", (self.selected_id,) ) conn.commit() cur.close() conn.close() self.load_data() # ===== запуск ===== if __name__ == "__main__": app = QApplication(sys.argv) window = SportApp() window.show() sys.exit(app.exec())