data_process_ui/app/widget_tree.py
2026-01-12 09:21:42 +08:00

69 lines
1.5 KiB
Python

# -*- encoding: utf-8 -*-
import os
import datetime
from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import (
QDockWidget, QTabWidget, QTreeWidget, QTreeWidgetItem,
)
from PyQt6.QtGui import (
QFont, QIcon,
)
from config import config
font = QFont("consolas", 14)
font.setFamilies(["consolas", "黑体"])
class tree_item(QTreeWidgetItem):
def __init__(self, data, *arg, **kwarg):
super().__init__(*arg, **kwarg)
self.data = data
class tree_widget(QTreeWidget):
def __init__(self, window, *arg, **kwarg):
super().__init__(*arg, **kwarg)
self.window = window
self.setColumnCount(1)
self.setHeaderLabels(["项目"])
if "tree" in config:
config_tree = config["tree"]
def search(node, config):
for child in config:
id = child["id"]
label = child["label"]
data = {
"id": id,
}
item = tree_item(data, [label])
node.addChild(item)
if "child" in child:
search(item, child["child"])
search(self, config_tree)
self.itemClicked.connect(self.on_item_clicked)
def addChild(self, item):
return super().addTopLevelItem(item)
def on_item_clicked(self, item, column):
self.window.widget_display.load_project(item.data["id"])
class widget_tree(QDockWidget):
def __init__(self, window, *arg, **kwarg):
super().__init__(*arg, **kwarg)
self.window = window
self.setAllowedAreas(Qt.DockWidgetArea.LeftDockWidgetArea | Qt.DockWidgetArea.RightDockWidgetArea)
self.setFont(font)
self.tree_widget = tree_widget(window)
self.setWidget(self.tree_widget)