25 lines
915 B
Python
25 lines
915 B
Python
![]() |
from PySide6.QtWidgets import QTreeWidget, QTreeWidgetItem
|
||
|
from PySide6.QtCore import Qt
|
||
|
|
||
|
def apply_indentation_to_all_columns(tree: QTreeWidget):
|
||
|
"""
|
||
|
Rekurencyjnie stosuje wizualne wcięcie dla wszystkich elementów w drzewie
|
||
|
we wszystkich kolumnach.
|
||
|
"""
|
||
|
for i in range(tree.topLevelItemCount()):
|
||
|
item = tree.topLevelItem(i)
|
||
|
_indent_subtree(item, 0)
|
||
|
|
||
|
def _indent_subtree(item: QTreeWidgetItem, level: int):
|
||
|
"""Dodaje wcięcie (np. spacje) na każdy poziom hierarchii w całym wierszu."""
|
||
|
indent_spaces = " " * 2 * level
|
||
|
for col in range(item.columnCount()):
|
||
|
original_text = item.text(col).lstrip()
|
||
|
item.setText(col, f"{indent_spaces}{original_text}")
|
||
|
item.setData(col, Qt.TextAlignmentRole, Qt.AlignLeft | Qt.AlignVCenter)
|
||
|
|
||
|
# Rekurencja dla dzieci
|
||
|
for i in range(item.childCount()):
|
||
|
_indent_subtree(item.child(i), level + 1)
|
||
|
|