This commit is contained in:
Андрей Дувакин 2025-01-08 22:39:20 +05:00
parent 173e2dbfdb
commit f3154d7b61
5 changed files with 331 additions and 5 deletions

View File

@ -21,14 +21,12 @@ class DepartmentGraph(QGraphicsView):
def render_graph(self): def render_graph(self):
root_departments = [d for d in self.departments if d.parent_id is None] root_departments = [d for d in self.departments if d.parent_id is None]
spacing = 2500 # Если один корневой элемент, оставить стандартное
x = 50 # Начальная координата X x = 50 # Начальная координата X
y = 50 # Начальная координата Y y = 50 # Начальная координата Y
for root in root_departments: for root in root_departments:
self.add_department_node(root, x, y) self.add_department_node(root, x, y)
x += spacing # Увеличиваем X для следующего корневого элемента
def add_department_node(self, department, x, y, parent_item=None, level=0): 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 child_x = x - len(child_departments) * 100 // 2
for index, child in enumerate(child_departments): for index, child in enumerate(child_departments):
# Чередуем высоту (шашечное расположение) # Чередуем высоту (шашечное расположение)
offset_y = (index % 2) * 150 # Смещение по оси Y для чередования offset_y = (index % 2) * 50 # Смещение по оси Y для чередования
self.add_department_node(child, child_x, y + 100 + offset_y, proxy, level + 1) but_width = self.add_department_node(child, child_x, y + 50, proxy, level + 1)
child_x += 150 child_x += 250
return button.width()
if __name__ == "__main__": if __name__ == "__main__":

3
Desktop/main.py Normal file
View File

@ -0,0 +1,3 @@

BIN
Desktop/res/Logo.png Normal file

Binary file not shown.

After

Width:  |  Height:  |  Size: 11 KiB

115
Desktop/ui/card_widget.ui Normal file
View File

@ -0,0 +1,115 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>Form</class>
<widget class="QWidget" name="Form">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>450</width>
<height>130</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>450</width>
<height>130</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>450</width>
<height>130</height>
</size>
</property>
<property name="sizeIncrement">
<size>
<width>400</width>
<height>130</height>
</size>
</property>
<property name="windowTitle">
<string>Form</string>
</property>
<property name="styleSheet">
<string notr="true">#Form {
background-color: rgb(228, 244, 204);
}</string>
</property>
<widget class="QWidget" name="verticalLayoutWidget">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>461</width>
<height>131</height>
</rect>
</property>
<layout class="QVBoxLayout" name="verticalLayout">
<item>
<widget class="QLabel" name="label">
<property name="font">
<font>
<pointsize>8</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="font">
<font>
<pointsize>15</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_3">
<property name="font">
<font>
<pointsize>13</pointsize>
</font>
</property>
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_4">
<property name="text">
<string>TextLabel</string>
</property>
</widget>
</item>
</layout>
</widget>
<widget class="QPushButton" name="pushButton">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>450</width>
<height>130</height>
</rect>
</property>
<property name="styleSheet">
<string notr="true">#pushButton {
background-color: rgba(255, 255, 255, 0);
}</string>
</property>
<property name="text">
<string/>
</property>
</widget>
</widget>
<resources/>
<connections/>
</ui>

208
Desktop/ui/main.ui Normal file
View File

@ -0,0 +1,208 @@
<?xml version="1.0" encoding="UTF-8"?>
<ui version="4.0">
<class>MainWindow</class>
<widget class="QMainWindow" name="MainWindow">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>921</width>
<height>600</height>
</rect>
</property>
<property name="minimumSize">
<size>
<width>500</width>
<height>500</height>
</size>
</property>
<property name="windowTitle">
<string>ИС &quot;Российские дороги&quot; - Управление персоналом</string>
</property>
<property name="windowIcon">
<iconset>
<normaloff>../res/Logo.png</normaloff>../res/Logo.png</iconset>
</property>
<widget class="QWidget" name="centralwidget">
<layout class="QGridLayout" name="gridLayout">
<item row="2" column="0">
<spacer name="horizontalSpacer_3">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="2" column="2">
<widget class="QPushButton" name="pushButton">
<property name="minimumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>50</width>
<height>50</height>
</size>
</property>
<property name="font">
<font>
<pointsize>21</pointsize>
<bold>true</bold>
</font>
</property>
<property name="styleSheet">
<string notr="true">#pushButton {
background-color: rgb(228, 244, 204);
}</string>
</property>
<property name="text">
<string>+</string>
</property>
</widget>
</item>
<item row="1" column="0">
<widget class="QScrollArea" name="scrollArea">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>419</width>
<height>399</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_3">
<item row="0" column="0">
<layout class="QGridLayout" name="gridLayout_2"/>
</item>
</layout>
</widget>
</widget>
</item>
<item row="0" column="0" colspan="3">
<widget class="QWidget" name="widget" native="true">
<property name="styleSheet">
<string notr="true">#widget {
background-color: rgb(228, 244, 204);
}</string>
</property>
<layout class="QHBoxLayout" name="horizontalLayout_2">
<item>
<widget class="QLabel" name="label">
<property name="minimumSize">
<size>
<width>80</width>
<height>80</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>80</width>
<height>80</height>
</size>
</property>
<property name="text">
<string/>
</property>
<property name="pixmap">
<pixmap>../res/Logo.png</pixmap>
</property>
<property name="scaledContents">
<bool>true</bool>
</property>
</widget>
</item>
<item>
<widget class="QLabel" name="label_2">
<property name="minimumSize">
<size>
<width>450</width>
<height>0</height>
</size>
</property>
<property name="maximumSize">
<size>
<width>16777215</width>
<height>30</height>
</size>
</property>
<property name="styleSheet">
<string notr="true">#label_2 {
background-color: rgb(255, 255, 255);
border-radius: 10px;
}</string>
</property>
<property name="text">
<string>Организационна структура</string>
</property>
</widget>
</item>
<item>
<spacer name="horizontalSpacer">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
</layout>
</widget>
</item>
<item row="2" column="1">
<spacer name="horizontalSpacer_2">
<property name="orientation">
<enum>Qt::Horizontal</enum>
</property>
<property name="sizeHint" stdset="0">
<size>
<width>40</width>
<height>20</height>
</size>
</property>
</spacer>
</item>
<item row="1" column="1" colspan="2">
<widget class="QScrollArea" name="scrollArea_2">
<property name="widgetResizable">
<bool>true</bool>
</property>
<widget class="QWidget" name="scrollAreaWidgetContents_2">
<property name="geometry">
<rect>
<x>0</x>
<y>0</y>
<width>474</width>
<height>399</height>
</rect>
</property>
<layout class="QGridLayout" name="gridLayout_4">
<item row="0" column="0">
<layout class="QVBoxLayout" name="verticalLayout"/>
</item>
</layout>
</widget>
</widget>
</item>
</layout>
</widget>
<widget class="QStatusBar" name="statusbar"/>
</widget>
<resources/>
<connections/>
</ui>