/
Jackmas
/
video
Обзор
Документация
Войти
/
Jackmas
/
video
Код
Запросы
0
Задачи
Вики
Пакеты
0
Релизы
0
Аналитика
Безопасность
master
edit_window.py
105 строк
4 KB
jackmas
fm_lin
04 фев 2026, 16:28
04 фев 2026, 16:28
806468d
Код
Авторство
О чём код?
from PyQt5.QtWidgets import * class TableEditDialog(QDialog): def __init__(self, json_data, parent=None): super().__init__(parent) self.json_data = json_data self.setup_ui() self.load_data() def setup_ui(self): self.setWindowTitle("Табличное редактирование камер") self.setMinimumSize(1000, 500) layout = QVBoxLayout() # Таблица для редактирования self.table = QTableWidget() self.table.setColumnCount(4) self.table.setHorizontalHeaderLabels(["Название камеры", "RTSP URL","Записывать","Путь сохранения"]) self.table.horizontalHeader().setStretchLastSection(True) self.table.setColumnWidth(0, 150) self.table.setColumnWidth(1, 500) self.table.setColumnWidth(2, 80) # Кнопки управления строками button_layout = QHBoxLayout() self.add_button = QPushButton("Добавить камеру") self.delete_button = QPushButton("Удалить выбранную") self.add_button.clicked.connect(self.add_row) self.delete_button.clicked.connect(self.delete_row) button_layout.addWidget(self.add_button) button_layout.addWidget(self.delete_button) button_layout.addStretch() # Кнопки диалога dialog_buttons = QHBoxLayout() self.save_button = QPushButton("Сохранить") self.cancel_button = QPushButton("Отмена") self.save_button.clicked.connect(self.accept) self.cancel_button.clicked.connect(self.reject) dialog_buttons.addStretch() dialog_buttons.addWidget(self.save_button) dialog_buttons.addWidget(self.cancel_button) layout.addWidget(QLabel("Редактирование камер:")) layout.addWidget(self.table) layout.addLayout(button_layout) layout.addLayout(dialog_buttons) self.setLayout(layout) def load_data(self): """Загружает данные в таблицу""" self.table.setRowCount(len(self.json_data)) for i, camera in enumerate(self.json_data): camera_item = QTableWidgetItem(camera.get("camera", f"Cam-{i+1}")) rtsp_item = QTableWidgetItem(camera.get("rtsp", "")) record_item = QTableWidgetItem(camera.get("record")) path_item = QTableWidgetItem(camera.get("path")) # print(record_item) self.table.setItem(i, 0, camera_item) self.table.setItem(i, 1, rtsp_item) self.table.setItem(i, 2, record_item) self.table.setItem(i, 3, path_item) def add_row(self): """Добавляет новую строку в таблицу""" row = self.table.rowCount() self.table.insertRow(row) self.table.setItem(row, 0, QTableWidgetItem(f"Cam-{row+1}")) self.table.setItem(row, 1, QTableWidgetItem("")) self.table.setItem(row, 2, QTableWidgetItem("False")) self.table.setItem(row, 3, QTableWidgetItem("/media/")) def delete_row(self): """Удаляет выбранную строку""" current_row = self.table.currentRow() if current_row >= 0: self.table.removeRow(current_row) def get_json_data(self): """Возвращает данные из таблицы в формате JSON""" data = [] for row in range(self.table.rowCount()): camera_name = self.table.item(row, 0) rtsp_url = self.table.item(row, 1) record = self.table.item(row, 2) path_item = self.table.item(row, 3) if camera_name and rtsp_url: data.append({ "camera": camera_name.text(), "rtsp": rtsp_url.text(), "record": record.text(), "path":path_item.text() }) return data