From f3154d7b614a52c7ff7f256dfc66b04ca440b43d Mon Sep 17 00:00:00 2001 From: andrei Date: Wed, 8 Jan 2025 22:39:20 +0500 Subject: [PATCH] ._. --- Desktop/1.py | 10 +- Desktop/main.py | 3 + Desktop/res/Logo.png | Bin 0 -> 11140 bytes Desktop/ui/card_widget.ui | 115 +++++++++++++++++++++ Desktop/ui/main.ui | 208 ++++++++++++++++++++++++++++++++++++++ 5 files changed, 331 insertions(+), 5 deletions(-) create mode 100644 Desktop/main.py create mode 100644 Desktop/res/Logo.png create mode 100644 Desktop/ui/card_widget.ui create mode 100644 Desktop/ui/main.ui diff --git a/Desktop/1.py b/Desktop/1.py index c37f743..430bbc3 100644 --- a/Desktop/1.py +++ b/Desktop/1.py @@ -21,14 +21,12 @@ class DepartmentGraph(QGraphicsView): def render_graph(self): root_departments = [d for d in self.departments if d.parent_id is None] - spacing = 2500 # Если один корневой элемент, оставить стандартное x = 50 # Начальная координата X y = 50 # Начальная координата Y for root in root_departments: self.add_department_node(root, x, y) - x += spacing # Увеличиваем X для следующего корневого элемента def add_department_node(self, department, x, y, parent_item=None, level=0): # Создаем кнопку @@ -53,9 +51,11 @@ class DepartmentGraph(QGraphicsView): child_x = x - len(child_departments) * 100 // 2 for index, child in enumerate(child_departments): # Чередуем высоту (шашечное расположение) - offset_y = (index % 2) * 150 # Смещение по оси Y для чередования - self.add_department_node(child, child_x, y + 100 + offset_y, proxy, level + 1) - child_x += 150 + offset_y = (index % 2) * 50 # Смещение по оси Y для чередования + but_width = self.add_department_node(child, child_x, y + 50, proxy, level + 1) + child_x += 250 + + return button.width() if __name__ == "__main__": diff --git a/Desktop/main.py b/Desktop/main.py new file mode 100644 index 0000000..b28b04f --- /dev/null +++ b/Desktop/main.py @@ -0,0 +1,3 @@ + + + diff --git a/Desktop/res/Logo.png b/Desktop/res/Logo.png new file mode 100644 index 0000000000000000000000000000000000000000..5f6696b2644d9845af000c4260ed16ce982b6dff GIT binary patch literal 11140 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 + + Form + + + + 0 + 0 + 450 + 130 + + + + + 450 + 130 + + + + + 450 + 130 + + + + + 400 + 130 + + + + Form + + + #Form { +background-color: rgb(228, 244, 204); +} + + + + + 0 + 0 + 461 + 131 + + + + + + + + 8 + + + + TextLabel + + + + + + + + 15 + + + + TextLabel + + + + + + + + 13 + + + + TextLabel + + + + + + + TextLabel + + + + + + + + + 0 + 0 + 450 + 130 + + + + #pushButton { + background-color: rgba(255, 255, 255, 0); +} + + + + + + + + + diff --git a/Desktop/ui/main.ui b/Desktop/ui/main.ui new file mode 100644 index 0000000..1fa464a --- /dev/null +++ b/Desktop/ui/main.ui @@ -0,0 +1,208 @@ + + + MainWindow + + + + 0 + 0 + 921 + 600 + + + + + 500 + 500 + + + + ИС "Российские дороги" - Управление персоналом + + + + ../res/Logo.png../res/Logo.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 50 + 50 + + + + + 50 + 50 + + + + + 21 + true + + + + #pushButton { + background-color: rgb(228, 244, 204); +} + + + + + + + + + + + true + + + + + 0 + 0 + 419 + 399 + + + + + + + + + + + + + + #widget { + background-color: rgb(228, 244, 204); +} + + + + + + + 80 + 80 + + + + + 80 + 80 + + + + + + + ../res/Logo.png + + + true + + + + + + + + 450 + 0 + + + + + 16777215 + 30 + + + + #label_2 { + background-color: rgb(255, 255, 255); + border-radius: 10px; +} + + + Организационна структура + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + true + + + + + 0 + 0 + 474 + 399 + + + + + + + + + + + + + + + + +