This commit is contained in:
2025-05-07 01:31:21 +08:00
parent d27ef50341
commit 27240530b6
18 changed files with 2033 additions and 1160 deletions

View File

@@ -47,6 +47,8 @@ ASSETS_PATH = config.ASSETS_PATH
DNA_FILE_PATH = config.DNA_FILE_PATH
DNA_IMG_PATH = config.DNA_IMG_PATH
TOOL_COMMAND_ICON = config.TOOL_COMMAND_ICON
TOOL_WIDTH = config.TOOL_WIDTH
TOOL_HEIGHT = config.TOOL_HEIGHT
#========================================= LOCATION =======================================
from scripts.ui import localization
LANG = localization.LANG
@@ -64,15 +66,37 @@ class DefinitionUI(ui_utils.BaseUI):
"""
super(DefinitionUI, self).__init__()
# 设置单例实例
DefinitionUI._instance = self
# 创建主控件
self.main_widget = QtWidgets.QWidget()
self.main_widget.setObjectName("definitionMainWidget")
# 初始化字典
self.controls = {}
self.layouts = {}
self.splitters = {}
self.buttons = {}
# 初始化UI
self.create_widgets()
self.create_layouts()
self.create_connections()
# 添加左右面板到分割器
self.splitters["main_splitter"].addWidget(self.controls["left_panel"])
self.splitters["main_splitter"].addWidget(self.controls["right_panel"])
# 设置分割器所有子元素的最小尺寸为0确保可以自由调整
ui_utils.set_splitter_children_minimum_size(self, recursive=True)
# 设置所有控件的最小尺寸为0确保分割器可以自由移动
ui_utils.set_all_controls_minimum_size(self)
# 使用ui_utils中的函数强制设置均等大小
ui_utils.force_equal_splitter_sizes(self)
#========================================= WIDGET =======================================
def create_widgets(self):
"""
@@ -89,6 +113,9 @@ class DefinitionUI(ui_utils.BaseUI):
# 主分割器
self.splitters["main_splitter"] = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
self.splitters["main_splitter"].setObjectName("definitionMainSplitter")
self.splitters["main_splitter"].setHandleWidth(6) # 设置分割器手柄宽度
self.splitters["main_splitter"].setChildrenCollapsible(False) # 禁止子部件折叠
self.splitters["main_splitter"].setOpaqueResize(True) # 实时显示调整效果
# 左侧面板
self.controls["left_panel"] = QtWidgets.QWidget()
@@ -221,8 +248,14 @@ class DefinitionUI(ui_utils.BaseUI):
# 添加标题标签
self.layouts["main_layout"].addWidget(self.controls["title_label"])
# 添加主分割器
self.layouts["main_layout"].addWidget(self.splitters["main_splitter"])
# 主分割器布局
self.layouts["main_splitter_layout"] = QtWidgets.QHBoxLayout()
self.layouts["main_splitter_layout"].setContentsMargins(0, 0, 0, 0)
self.layouts["main_splitter_layout"].setSpacing(0)
self.layouts["main_splitter_layout"].addWidget(self.splitters["main_splitter"])
# 添加主分割器布局到主布局
self.layouts["main_layout"].addLayout(self.layouts["main_splitter_layout"])
# 左侧面板布局
self.layouts["left_layout"] = QtWidgets.QVBoxLayout(self.controls["left_panel"])
@@ -338,23 +371,6 @@ class DefinitionUI(ui_utils.BaseUI):
# 添加底部面板到主布局
self.layouts["main_layout"].addLayout(self.layouts["bottom_panel"])
# 设置分割器初始大小
# 主分割器左右各半
self.splitters["main_splitter"].setSizes([500, 500])
# 左侧分割器上下各半
self.splitters["left_splitter"].setSizes([250, 250])
# 右侧分割器均匀分配
right_item_height = 1000 // self.splitters["right_splitter"].count()
self.splitters["right_splitter"].setSizes([right_item_height] * self.splitters["right_splitter"].count())
# 设置分割器的伸缩因子,确保左右栏能够自动调整宽度
for i in range(self.splitters["main_splitter"].count()):
self.splitters["main_splitter"].setStretchFactor(i, 1)
# 将左右面板添加到主分割器
self.splitters["main_splitter"].addWidget(self.controls["left_panel"])
self.splitters["main_splitter"].addWidget(self.controls["right_panel"])
#======================================= CONNECTION =====================================
def create_connections(self):