Загрузка данных
import sys
from PyQt6 import QtWidgets
from PyQt6.QtWidgets import QLineEdit, QComboBox
class Panel(QtWidgets.QWidget):
def __init__(self):
super().__init__()
# Немного увеличим размер, чтобы все влезло
self.resize(700, 300)
self.setWindowTitle("Панель администратора")
# 1. Создаем ГЛАВНЫЙ вертикальный слой
self.main_vertical_layout = QtWidgets.QVBoxLayout()
# ================= РЯД 1: Заголовки =================
self.horizontal_layout_1 = QtWidgets.QHBoxLayout()
self.label_navigation = QtWidgets.QLabel("Навигация")
self.label_date = QtWidgets.QLabel("Дата:")
self.label_type = QtWidgets.QLabel("Тип:")
self.horizontal_layout_1.addWidget(self.label_navigation)
# Добавляем растяжение, чтобы "Дата" и "Тип" сдвинулись вправо
self.horizontal_layout_1.addStretch()
self.horizontal_layout_1.addWidget(self.label_date)
self.horizontal_layout_1.addWidget(self.label_type)
# Добавляем этот ряд в главный слой
self.main_vertical_layout.addLayout(self.horizontal_layout_1)
# ================= РЯД 2: Поля ввода =================
self.horizontal_layout_2 = QtWidgets.QHBoxLayout()
# Пустая метка-заглушка, чтобы выровнять поля под метками "Дата" и "Тип"
self.empty_label = QtWidgets.QLabel("")
self.line_input = QLineEdit("2024-01-15")
self.combo_input = QComboBox()
self.combo_input.addItems(["Все", "Ошибка", "Информация"])
self.horizontal_layout_2.addWidget(self.empty_label)
self.horizontal_layout_2.addStretch()
self.horizontal_layout_2.addWidget(self.line_input)
self.horizontal_layout_2.addWidget(self.combo_input)
self.main_vertical_layout.addLayout(self.horizontal_layout_2)
# Добавим немного пустого места перед следующими рядами
self.main_vertical_layout.addSpacing(10)
# ================= РЯД 3: Кнопки Применить и Выбрать =================
self.horizontal_layout_3 = QtWidgets.QHBoxLayout()
self.btn_apply = QtWidgets.QPushButton("Применить")
self.btn_select = QtWidgets.QPushButton("Выбрать")
# Пустая метка для отступа слева (под размер слова "Пользователи")
self.empty_label_2 = QtWidgets.QLabel("")
self.empty_label_2.setFixedWidth(100) # Фиксируем ширину для ровности
self.horizontal_layout_3.addWidget(self.empty_label_2)
self.horizontal_layout_3.addWidget(self.btn_apply)
self.horizontal_layout_3.addWidget(self.btn_select)
self.main_vertical_layout.addLayout(self.horizontal_layout_3)
# ================= РЯД 4: Пользователи =================
self.horizontal_layout_4 = QtWidgets.QHBoxLayout()
self.label_users = QtWidgets.QLabel("Пользователи")
self.label_users.setFixedWidth(100)
self.btn_open_users = QtWidgets.QPushButton("Открыть")
self.btn_open_users.setFixedWidth(80)
self.input_users = QLineEdit()
self.btn_edit_users = QtWidgets.QPushButton("Редактировать")
self.horizontal_layout_4.addWidget(self.label_users)
self.horizontal_layout_4.addWidget(self.btn_open_users)
self.horizontal_layout_4.addWidget(self.input_users)
self.horizontal_layout_4.addWidget(self.btn_edit_users)
self.main_vertical_layout.addLayout(self.horizontal_layout_4)
# ================= РЯД 5: Статистика =================
self.horizontal_layout_5 = QtWidgets.QHBoxLayout()
self.label_stats = QtWidgets.QLabel("Статистика")
self.label_stats.setFixedWidth(100)
self.btn_open_stats = QtWidgets.QPushButton("Открыть")
self.btn_open_stats.setFixedWidth(80)
self.input_stats = QLineEdit()
self.btn_select_stats = QtWidgets.QPushButton("Выбрать")
self.horizontal_layout_5.addWidget(self.label_stats)
self.horizontal_layout_5.addWidget(self.btn_open_stats)
self.horizontal_layout_5.addWidget(self.input_stats)
self.horizontal_layout_5.addWidget(self.btn_select_stats)
self.main_vertical_layout.addLayout(self.horizontal_layout_5)
# ================= РЯД 6: Логи =================
self.horizontal_layout_6 = QtWidgets.QHBoxLayout()
self.label_logs = QtWidgets.QLabel("Логи")
self.label_logs.setFixedWidth(100)
self.btn_open_logs = QtWidgets.QPushButton("Открыть")
self.btn_open_logs.setFixedWidth(80)
self.label_id = QtWidgets.QLabel("ID:")
self.input_logs = QLineEdit("001")
self.btn_change_logs = QtWidgets.QPushButton("Сменить")
self.horizontal_layout_6.addWidget(self.label_logs)
self.horizontal_layout_6.addWidget(self.btn_open_logs)
self.horizontal_layout_6.addWidget(self.label_id)
self.horizontal_layout_6.addWidget(self.input_logs)
self.horizontal_layout_6.addWidget(self.btn_change_logs)
self.main_vertical_layout.addLayout(self.horizontal_layout_6)
# ================= РЯД 7: Настройки =================
self.horizontal_layout_7 = QtWidgets.QHBoxLayout()
self.label_settings = QtWidgets.QLabel("Настройки")
self.label_settings.setFixedWidth(100)
self.btn_open_settings = QtWidgets.QPushButton("Открыть")
self.btn_open_settings.setFixedWidth(80)
self.label_name = QtWidgets.QLabel("Имя:")
self.input_settings = QLineEdit("Администратор")
self.btn_change_settings = QtWidgets.QPushButton("Изменить")
self.horizontal_layout_7.addWidget(self.label_settings)
self.horizontal_layout_7.addWidget(self.btn_open_settings)
self.horizontal_layout_7.addWidget(self.label_name)
self.horizontal_layout_7.addWidget(self.input_settings)
self.horizontal_layout_7.addWidget(self.btn_change_settings)
self.main_vertical_layout.addLayout(self.horizontal_layout_7)
# Добавляем растяжение в самый низ, чтобы все элементы прижались к верху
self.main_vertical_layout.addStretch()
# Устанавливаем ГЛАВНЫЙ слой ОДИН раз
self.setLayout(self.main_vertical_layout)
if __name__ == "__main__":
app = QtWidgets.QApplication(sys.argv)
window = Panel()
window.show()
sys.exit(app.exec())