# -*- 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)