This commit is contained in:
2025-05-05 19:57:27 +08:00
parent 46d93efb3c
commit f4f0c8196c
10 changed files with 2459 additions and 411 deletions

View File

@@ -86,14 +86,10 @@ class BehaviourUI(ui_utils.BaseUI):
包括按钮、标签、列表等
"""
# 标题标签
self.controls["title_label"] = QtWidgets.QLabel(LANG.get("behaviour_title", "角色行为"))
self.controls["title_label"] = QtWidgets.QLabel(LANG.get("behaviour_title", "行为"))
self.controls["title_label"].setObjectName("behaviourTitleLabel")
self.controls["title_label"].setAlignment(QtCore.Qt.AlignCenter)
# 创建主分割器
self.splitters["main_splitter"] = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
self.splitters["main_splitter"].setObjectName("behaviourMainSplitter")
# 左侧面板
self.controls["left_panel"] = QtWidgets.QWidget()
self.controls["left_panel"].setObjectName("behaviourLeftPanel")
@@ -102,56 +98,150 @@ class BehaviourUI(ui_utils.BaseUI):
self.controls["right_panel"] = QtWidgets.QWidget()
self.controls["right_panel"].setObjectName("behaviourRightPanel")
# 左侧面板控件
# Blendshape列表组
self.controls["blendshape_group"] = QtWidgets.QGroupBox(LANG.get("blendshape_group", "Blendshape列表"))
self.controls["blendshape_group"].setObjectName("blendshapeGroup")
# 左侧面板控件 - Raw Control
self.controls["raw_control_group"] = QtWidgets.QGroupBox("Raw Control [000]")
self.controls["raw_control_group"].setObjectName("rawControlGroup")
# Blendshape列表
self.controls["blendshape_list"] = QtWidgets.QListWidget()
self.controls["blendshape_list"].setObjectName("blendshapeList")
# 搜索框
self.controls["search_input"] = QtWidgets.QLineEdit()
self.controls["search_input"].setObjectName("searchInput")
self.controls["search_input"].setPlaceholderText(LANG.get("search", "搜索..."))
# Blendshape刷新按钮
self.buttons["refresh_blendshape"] = QtWidgets.QPushButton(LANG.get("refresh", "刷新"))
self.buttons["refresh_blendshape"].setObjectName("refreshBlendshapeButton")
# 控制列表
self.controls["control_list"] = QtWidgets.QListWidget()
self.controls["control_list"].setObjectName("controlList")
# Blendshape过滤组
self.controls["blendshape_filter_group"] = QtWidgets.QGroupBox(LANG.get("blendshape_filter", "Blendshape过滤"))
self.controls["blendshape_filter_group"].setObjectName("blendshapeFilterGroup")
# 底部滑块和按钮
self.controls["bottom_slider"] = QtWidgets.QSlider(QtCore.Qt.Horizontal)
self.controls["bottom_slider"].setObjectName("bottomSlider")
self.controls["bottom_slider"].setMinimum(0)
self.controls["bottom_slider"].setMaximum(100)
self.controls["bottom_slider"].setValue(10)
# Blendshape过滤输入框
self.controls["blendshape_filter_input"] = QtWidgets.QLineEdit()
self.controls["blendshape_filter_input"].setObjectName("blendshapeFilterInput")
self.controls["blendshape_filter_input"].setPlaceholderText(LANG.get("filter_placeholder", "输入过滤条件"))
# 页码按钮
self.buttons["page_all"] = QtWidgets.QPushButton("All")
self.buttons["page_all"].setObjectName("pageAllButton")
self.buttons["page_all"].setCheckable(True)
self.buttons["page_all"].setChecked(True)
# 次级Blendshape列表组
self.controls["secondary_blendshape_group"] = QtWidgets.QGroupBox(LANG.get("secondary_blendshape_group", "次级Blendshape"))
self.controls["secondary_blendshape_group"].setObjectName("secondaryBlendshapeGroup")
self.buttons["page_2"] = QtWidgets.QPushButton("2")
self.buttons["page_2"].setObjectName("page2Button")
self.buttons["page_2"].setCheckable(True)
# 次级Blendshape列表
self.controls["secondary_blendshape_list"] = QtWidgets.QListWidget()
self.controls["secondary_blendshape_list"].setObjectName("secondaryBlendshapeList")
self.buttons["page_3"] = QtWidgets.QPushButton("3")
self.buttons["page_3"].setObjectName("page3Button")
self.buttons["page_3"].setCheckable(True)
# 次级Blendshape刷新按钮
self.buttons["refresh_secondary_blendshape"] = QtWidgets.QPushButton(LANG.get("refresh", "刷新"))
self.buttons["refresh_secondary_blendshape"].setObjectName("refreshSecondaryBlendshapeButton")
self.buttons["page_4"] = QtWidgets.QPushButton("4")
self.buttons["page_4"].setObjectName("page4Button")
self.buttons["page_4"].setCheckable(True)
# 右侧面板控件
# Blendshape操作组
self.controls["blendshape_ops_group"] = QtWidgets.QGroupBox(LANG.get("blendshape_operations", "Blendshape操作"))
self.controls["blendshape_ops_group"].setObjectName("blendshapeOpsGroup")
self.buttons["page_5"] = QtWidgets.QPushButton("5")
self.buttons["page_5"].setObjectName("page5Button")
self.buttons["page_5"].setCheckable(True)
# Blendshape操作按钮
self.buttons["export_blendshape"] = QtWidgets.QPushButton(LANG.get("export_blendshape", "导出Blendshape"))
self.buttons["import_blendshape"] = QtWidgets.QPushButton(LANG.get("import_blendshape", "导入Blendshape"))
self.buttons["edit_range"] = QtWidgets.QPushButton(LANG.get("edit_range", "编辑范围"))
self.buttons["mirror_blendshape"] = QtWidgets.QPushButton(LANG.get("mirror_blendshape", "镜像Blendshape"))
self.buttons["find_flip_target"] = QtWidgets.QPushButton(LANG.get("find_flip_target", "查找翻转目标"))
self.buttons["page_6"] = QtWidgets.QPushButton("6")
self.buttons["page_6"].setObjectName("page6Button")
self.buttons["page_6"].setCheckable(True)
# 表情控制组
self.controls["expression_control_group"] = QtWidgets.QGroupBox(LANG.get("expression_control", "表情控制"))
self.controls["expression_control_group"].setObjectName("expressionControlGroup")
# 左下角按钮
self.buttons["range_minus"] = QtWidgets.QPushButton("-")
self.buttons["range_minus"].setObjectName("rangeMinusButton")
self.buttons["range_plus"] = QtWidgets.QPushButton("+")
self.buttons["range_plus"].setObjectName("rangePlusButton")
# 右侧面板控件 - Related BlendShapes
self.controls["blendshapes_group"] = QtWidgets.QGroupBox("Related BlendShapes [000]")
self.controls["blendshapes_group"].setObjectName("blendshapesGroup")
# BlendShapes列表
self.controls["blendshapes_list"] = QtWidgets.QListWidget()
self.controls["blendshapes_list"].setObjectName("blendshapesList")
# 底部滑块和按钮
self.controls["bs_slider"] = QtWidgets.QSlider(QtCore.Qt.Horizontal)
self.controls["bs_slider"].setObjectName("bsSlider")
self.controls["bs_slider"].setMinimum(0)
self.controls["bs_slider"].setMaximum(100)
self.controls["bs_slider"].setValue(0)
# BlendShape操作按钮
self.buttons["reset_blendshape"] = QtWidgets.QPushButton(LANG.get("reset_blendshape", "重置混合形状"))
self.buttons["reset_blendshape"].setObjectName("resetBlendshapeButton")
self.buttons["mirror_blendshape"] = QtWidgets.QPushButton(LANG.get("mirror_blendshape", "镜像混合形状"))
self.buttons["mirror_blendshape"].setObjectName("mirrorBlendshapeButton")
self.buttons["add_blendshape"] = QtWidgets.QPushButton(LANG.get("add_blendshape", "添加混合形状"))
self.buttons["add_blendshape"].setObjectName("addBlendshapeButton")
self.buttons["remove_blendshape"] = QtWidgets.QPushButton(LANG.get("remove_blendshape", "移除混合形状"))
self.buttons["remove_blendshape"].setObjectName("removeBlendshapeButton")
self.buttons["update_blendshape"] = QtWidgets.QPushButton(LANG.get("update_blendshape", "更新混合形状"))
self.buttons["update_blendshape"].setObjectName("updateBlendshapeButton")
self.buttons["isolate_blendshape"] = QtWidgets.QPushButton(LANG.get("isolate_blendshape", "隔离混合形状"))
self.buttons["isolate_blendshape"].setObjectName("isolateBlendshapeButton")
self.buttons["new_blendshape"] = QtWidgets.QPushButton(LANG.get("new_blendshape", "新建混合形状"))
self.buttons["new_blendshape"].setObjectName("newBlendshapeButton")
self.buttons["combine_blendshape"] = QtWidgets.QPushButton(LANG.get("combine_blendshape", "组合混合形状"))
self.buttons["combine_blendshape"].setObjectName("combineBlendshapeButton")
# 底部标签页按钮
self.buttons["tab_bs"] = QtWidgets.QPushButton("BS")
self.buttons["tab_bs"].setObjectName("tabBsButton")
self.buttons["tab_bs"].setCheckable(True)
self.buttons["tab_bs"].setChecked(True)
self.buttons["tab_psd"] = QtWidgets.QPushButton("PSD")
self.buttons["tab_psd"].setObjectName("tabPsdButton")
self.buttons["tab_psd"].setCheckable(True)
self.buttons["tab_key"] = QtWidgets.QPushButton("KEY")
self.buttons["tab_key"].setObjectName("tabKeyButton")
self.buttons["tab_key"].setCheckable(True)
self.buttons["tab_jnt"] = QtWidgets.QPushButton("JNT")
self.buttons["tab_jnt"].setObjectName("tabJntButton")
self.buttons["tab_jnt"].setCheckable(True)
self.buttons["tab_ark"] = QtWidgets.QPushButton("ARK")
self.buttons["tab_ark"].setObjectName("tabArkButton")
self.buttons["tab_ark"].setCheckable(True)
self.buttons["tab_ctr"] = QtWidgets.QPushButton("CTR")
self.buttons["tab_ctr"].setObjectName("tabCtrButton")
self.buttons["tab_ctr"].setCheckable(True)
# 底部滑块
self.controls["bottom_main_slider"] = QtWidgets.QSlider(QtCore.Qt.Horizontal)
self.controls["bottom_main_slider"].setObjectName("bottomMainSlider")
self.controls["bottom_main_slider"].setMinimum(0)
self.controls["bottom_main_slider"].setMaximum(100)
self.controls["bottom_main_slider"].setValue(0)
# 底部按钮
self.buttons["exchange_from_expression"] = QtWidgets.QPushButton(LANG.get("exchange_from_expression", "交换从表情"))
self.buttons["exchange_from_expression"].setObjectName("exchangeFromExpressionButton")
self.buttons["reset_selected_expression"] = QtWidgets.QPushButton(LANG.get("reset_selected_expression", "重置选定表情"))
self.buttons["reset_selected_expression"].setObjectName("resetSelectedExpressionButton")
self.buttons["import_expression"] = QtWidgets.QPushButton(LANG.get("import_expression", "导入表情"))
self.buttons["import_expression"].setObjectName("importExpressionButton")
self.buttons["control_panel_search"] = QtWidgets.QPushButton(LANG.get("control_panel_search", "控制面板搜索"))
self.buttons["control_panel_search"].setObjectName("controlPanelSearchButton")
self.buttons["select_related_keys"] = QtWidgets.QPushButton(LANG.get("select_related_keys", "选择相关键值"))
self.buttons["select_related_keys"].setObjectName("selectRelatedKeysButton")
self.buttons["import_map_expression"] = QtWidgets.QPushButton(LANG.get("import_map_expression", "导入表情映射"))
self.buttons["import_map_expression"].setObjectName("importMapExpressionButton")
# 表情控制按钮
self.buttons["reset_expression"] = QtWidgets.QPushButton(LANG.get("reset_expression", "还原默认表情"))
self.buttons["find_expression"] = QtWidgets.QPushButton(LANG.get("find_expression", "查找选择表情"))
@@ -161,76 +251,154 @@ class BehaviourUI(ui_utils.BaseUI):
def create_layouts(self):
"""
创建行为系统UI布局
组织控件的排列和层次结构
安排控件的位置和尺寸
"""
# 主布局
self.layouts["main_layout"] = QtWidgets.QVBoxLayout(self.main_widget)
self.layouts["main_layout"].setContentsMargins(5, 5, 5, 5)
self.layouts["main_layout"].setSpacing(5)
self.layouts["main_layout"] = QtWidgets.QVBoxLayout(self)
self.layouts["main_layout"].setContentsMargins(2, 2, 2, 2)
self.layouts["main_layout"].setSpacing(2)
# 添加标题标签
self.layouts["main_layout"].addWidget(self.controls["title_label"])
# 添加主分割器
# 创建主分割器
self.splitters["main_splitter"] = QtWidgets.QSplitter(QtCore.Qt.Horizontal)
self.splitters["main_splitter"].setObjectName("behaviourMainSplitter")
self.layouts["main_layout"].addWidget(self.splitters["main_splitter"])
# 将左右面板添加到主分割器
self.splitters["main_splitter"].addWidget(self.controls["left_panel"])
self.splitters["main_splitter"].addWidget(self.controls["right_panel"])
# 左侧面板布局
self.layouts["left_layout"] = QtWidgets.QVBoxLayout(self.controls["left_panel"])
self.layouts["left_layout"].setContentsMargins(5, 5, 5, 5)
self.layouts["left_layout"].setSpacing(5)
# Blendshape列表组布局
self.layouts["blendshape_layout"] = QtWidgets.QVBoxLayout(self.controls["blendshape_group"])
self.layouts["blendshape_layout"].addWidget(self.controls["blendshape_list"])
self.layouts["blendshape_layout"].addWidget(self.buttons["refresh_blendshape"])
# Raw Control组布局
self.layouts["raw_control_layout"] = QtWidgets.QVBoxLayout(self.controls["raw_control_group"])
self.layouts["raw_control_layout"].setContentsMargins(5, 10, 5, 5)
self.layouts["raw_control_layout"].setSpacing(5)
# Blendshape过滤组布局
self.layouts["blendshape_filter_layout"] = QtWidgets.QVBoxLayout(self.controls["blendshape_filter_group"])
self.layouts["blendshape_filter_layout"].addWidget(self.controls["blendshape_filter_input"])
# 搜索框
self.layouts["raw_control_layout"].addWidget(self.controls["search_input"])
# 次级Blendshape列表组布局
self.layouts["secondary_blendshape_layout"] = QtWidgets.QVBoxLayout(self.controls["secondary_blendshape_group"])
self.layouts["secondary_blendshape_layout"].addWidget(self.controls["secondary_blendshape_list"])
self.layouts["secondary_blendshape_layout"].addWidget(self.buttons["refresh_secondary_blendshape"])
# 控制列表
self.layouts["raw_control_layout"].addWidget(self.controls["control_list"])
# 添加组到左侧面板布局
self.layouts["left_layout"].addWidget(self.controls["blendshape_group"])
self.layouts["left_layout"].addWidget(self.controls["blendshape_filter_group"])
self.layouts["left_layout"].addWidget(self.controls["secondary_blendshape_group"])
self.layouts["left_layout"].addStretch()
# 底部滑块
self.layouts["raw_control_layout"].addWidget(self.controls["bottom_slider"])
# 页码按钮行
self.layouts["page_buttons_layout"] = QtWidgets.QHBoxLayout()
self.layouts["page_buttons_layout"].setContentsMargins(0, 0, 0, 0)
self.layouts["page_buttons_layout"].setSpacing(2)
self.layouts["page_buttons_layout"].addWidget(self.buttons["page_all"])
self.layouts["page_buttons_layout"].addWidget(self.buttons["page_2"])
self.layouts["page_buttons_layout"].addWidget(self.buttons["page_3"])
self.layouts["page_buttons_layout"].addWidget(self.buttons["page_4"])
self.layouts["page_buttons_layout"].addWidget(self.buttons["page_5"])
self.layouts["page_buttons_layout"].addWidget(self.buttons["page_6"])
self.layouts["raw_control_layout"].addLayout(self.layouts["page_buttons_layout"])
# 左下角按钮行
self.layouts["range_buttons_layout"] = QtWidgets.QHBoxLayout()
self.layouts["range_buttons_layout"].setContentsMargins(0, 0, 0, 0)
self.layouts["range_buttons_layout"].setSpacing(2)
self.layouts["range_buttons_layout"].addWidget(self.buttons["range_minus"])
self.layouts["range_buttons_layout"].addWidget(self.buttons["range_plus"])
self.layouts["range_buttons_layout"].addStretch()
self.layouts["raw_control_layout"].addLayout(self.layouts["range_buttons_layout"])
# 添加Raw Control组到左侧面板
self.layouts["left_layout"].addWidget(self.controls["raw_control_group"])
# 右侧面板布局
self.layouts["right_layout"] = QtWidgets.QVBoxLayout(self.controls["right_panel"])
self.layouts["right_layout"].setContentsMargins(5, 5, 5, 5)
self.layouts["right_layout"].setSpacing(5)
# Blendshape操作组布局
self.layouts["blendshape_ops_layout"] = QtWidgets.QVBoxLayout(self.controls["blendshape_ops_group"])
self.layouts["blendshape_ops_layout"].addWidget(self.buttons["export_blendshape"])
self.layouts["blendshape_ops_layout"].addWidget(self.buttons["import_blendshape"])
self.layouts["blendshape_ops_layout"].addWidget(self.buttons["edit_range"])
self.layouts["blendshape_ops_layout"].addWidget(self.buttons["mirror_blendshape"])
self.layouts["blendshape_ops_layout"].addWidget(self.buttons["find_flip_target"])
# BlendShapes组布局
self.layouts["blendshapes_layout"] = QtWidgets.QVBoxLayout(self.controls["blendshapes_group"])
self.layouts["blendshapes_layout"].setContentsMargins(5, 10, 5, 5)
self.layouts["blendshapes_layout"].setSpacing(5)
# 表情控制组布局
self.layouts["expression_control_layout"] = QtWidgets.QVBoxLayout(self.controls["expression_control_group"])
self.layouts["expression_control_layout"].addWidget(self.buttons["reset_expression"])
self.layouts["expression_control_layout"].addWidget(self.buttons["find_expression"])
self.layouts["expression_control_layout"].addWidget(self.buttons["find_control_panel"])
# BlendShapes列表
self.layouts["blendshapes_layout"].addWidget(self.controls["blendshapes_list"])
# 添加组到右侧面板布局
self.layouts["right_layout"].addWidget(self.controls["blendshape_ops_group"])
self.layouts["right_layout"].addWidget(self.controls["expression_control_group"])
self.layouts["right_layout"].addStretch()
# 滑块
self.layouts["blendshapes_layout"].addWidget(self.controls["bs_slider"])
# 创建分割器大小处理器
self.resize_handlers["main_splitter"] = ui_utils.SplitterResizeHandler(
self.main_widget, self.splitters["main_splitter"], is_horizontal=True
)
# BlendShape操作按钮网格
self.layouts["bs_buttons_grid"] = QtWidgets.QGridLayout()
self.layouts["bs_buttons_grid"].setContentsMargins(0, 0, 0, 0)
self.layouts["bs_buttons_grid"].setSpacing(2)
# 添加按钮到网格
self.layouts["bs_buttons_grid"].addWidget(self.buttons["reset_blendshape"], 0, 0)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["mirror_blendshape"], 0, 1)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["add_blendshape"], 1, 0)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["remove_blendshape"], 1, 1)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["update_blendshape"], 2, 0)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["isolate_blendshape"], 2, 1)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["new_blendshape"], 3, 0)
self.layouts["bs_buttons_grid"].addWidget(self.buttons["combine_blendshape"], 3, 1)
self.layouts["blendshapes_layout"].addLayout(self.layouts["bs_buttons_grid"])
# 标签页按钮行
self.layouts["tab_buttons_layout"] = QtWidgets.QHBoxLayout()
self.layouts["tab_buttons_layout"].setContentsMargins(0, 0, 0, 0)
self.layouts["tab_buttons_layout"].setSpacing(2)
self.layouts["tab_buttons_layout"].addWidget(self.buttons["tab_bs"])
self.layouts["tab_buttons_layout"].addWidget(self.buttons["tab_psd"])
self.layouts["tab_buttons_layout"].addWidget(self.buttons["tab_key"])
self.layouts["tab_buttons_layout"].addWidget(self.buttons["tab_jnt"])
self.layouts["tab_buttons_layout"].addWidget(self.buttons["tab_ark"])
self.layouts["tab_buttons_layout"].addWidget(self.buttons["tab_ctr"])
self.layouts["blendshapes_layout"].addLayout(self.layouts["tab_buttons_layout"])
# 添加BlendShapes组到右侧面板
self.layouts["right_layout"].addWidget(self.controls["blendshapes_group"])
# 底部工具面板
self.layouts["bottom_panel"] = QtWidgets.QVBoxLayout()
self.layouts["bottom_panel"].setContentsMargins(2, 2, 2, 2)
self.layouts["bottom_panel"].setSpacing(2)
# 底部滑块
self.layouts["bottom_panel"].addWidget(self.controls["bottom_main_slider"])
# 底部按钮网格
self.layouts["bottom_buttons_grid"] = QtWidgets.QGridLayout()
self.layouts["bottom_buttons_grid"].setContentsMargins(0, 0, 0, 0)
self.layouts["bottom_buttons_grid"].setSpacing(2)
# 添加底部按钮
self.layouts["bottom_buttons_grid"].addWidget(self.buttons["exchange_from_expression"], 0, 0)
self.layouts["bottom_buttons_grid"].addWidget(self.buttons["reset_selected_expression"], 0, 1)
self.layouts["bottom_buttons_grid"].addWidget(self.buttons["import_expression"], 0, 2)
self.layouts["bottom_buttons_grid"].addWidget(self.buttons["control_panel_search"], 1, 0)
self.layouts["bottom_buttons_grid"].addWidget(self.buttons["select_related_keys"], 1, 1)
self.layouts["bottom_buttons_grid"].addWidget(self.buttons["import_map_expression"], 1, 2)
self.layouts["bottom_panel"].addLayout(self.layouts["bottom_buttons_grid"])
# 添加底部面板到主布局
self.layouts["main_layout"].addLayout(self.layouts["bottom_panel"])
# 将左右面板添加到主分割器
self.splitters["main_splitter"].addWidget(self.controls["left_panel"])
self.splitters["main_splitter"].addWidget(self.controls["right_panel"])
# 设置分割器初始大小和伸缩因子
self.splitters["main_splitter"].setSizes([500, 500])
# 设置分割器的伸缩因子,确保左右栏能够自动调整宽度
for i in range(self.splitters["main_splitter"].count()):
self.splitters["main_splitter"].setStretchFactor(i, 1)
#======================================= CONNECTION =====================================
def create_connections(self):
@@ -238,23 +406,65 @@ class BehaviourUI(ui_utils.BaseUI):
连接信号和槽
设置UI控件的交互行为
"""
# Blendshape列表按钮连接
self.buttons["refresh_blendshape"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
# 导入行为工具函数
from scripts.utils import utils_behaviour
# Blendshape过滤连接
self.controls["blendshape_filter_input"].textChanged.connect(utils_behaviour.behaviour_temp_utils_function)
# 左侧面板连接
# 搜索框连接
self.controls["search_input"].textChanged.connect(utils_behaviour.filter_controls)
# 次级Blendshape按钮连接
self.buttons["refresh_secondary_blendshape"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
# 控制列表连接
self.controls["control_list"].itemClicked.connect(utils_behaviour.control_selected)
self.controls["control_list"].itemSelectionChanged.connect(utils_behaviour.update_control_selection)
# Blendshape操作按钮连接
self.buttons["export_blendshape"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
self.buttons["import_blendshape"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
self.buttons["edit_range"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
self.buttons["mirror_blendshape"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
self.buttons["find_flip_target"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
# 底部滑块连接
self.controls["bottom_slider"].valueChanged.connect(utils_behaviour.update_control_value)
# 表情控制按钮连接
self.buttons["reset_expression"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
self.buttons["find_expression"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
self.buttons["find_control_panel"].clicked.connect(utils_behaviour.behaviour_temp_utils_function)
# 页码按钮连接
self.buttons["page_all"].clicked.connect(lambda: utils_behaviour.switch_page("all"))
self.buttons["page_2"].clicked.connect(lambda: utils_behaviour.switch_page("2"))
self.buttons["page_3"].clicked.connect(lambda: utils_behaviour.switch_page("3"))
self.buttons["page_4"].clicked.connect(lambda: utils_behaviour.switch_page("4"))
self.buttons["page_5"].clicked.connect(lambda: utils_behaviour.switch_page("5"))
self.buttons["page_6"].clicked.connect(lambda: utils_behaviour.switch_page("6"))
# 左下角按钮连接
self.buttons["range_minus"].clicked.connect(utils_behaviour.decrease_range)
self.buttons["range_plus"].clicked.connect(utils_behaviour.increase_range)
# 右侧面板连接
# BlendShapes列表连接
self.controls["blendshapes_list"].itemClicked.connect(utils_behaviour.blendshape_selected)
self.controls["blendshapes_list"].itemSelectionChanged.connect(utils_behaviour.update_blendshape_selection)
# 滑块连接
self.controls["bs_slider"].valueChanged.connect(utils_behaviour.update_blendshape_value)
# BlendShape操作按钮连接
self.buttons["reset_blendshape"].clicked.connect(utils_behaviour.reset_blendshape)
self.buttons["mirror_blendshape"].clicked.connect(utils_behaviour.mirror_blendshape)
self.buttons["add_blendshape"].clicked.connect(utils_behaviour.add_blendshape)
self.buttons["remove_blendshape"].clicked.connect(utils_behaviour.remove_blendshape)
self.buttons["update_blendshape"].clicked.connect(utils_behaviour.update_blendshape)
self.buttons["isolate_blendshape"].clicked.connect(utils_behaviour.isolate_blendshape)
self.buttons["new_blendshape"].clicked.connect(utils_behaviour.new_blendshape)
self.buttons["combine_blendshape"].clicked.connect(utils_behaviour.combine_blendshape)
# 标签页按钮连接
self.buttons["tab_bs"].clicked.connect(lambda: utils_behaviour.switch_tab("bs"))
self.buttons["tab_psd"].clicked.connect(lambda: utils_behaviour.switch_tab("psd"))
self.buttons["tab_key"].clicked.connect(lambda: utils_behaviour.switch_tab("key"))
self.buttons["tab_jnt"].clicked.connect(lambda: utils_behaviour.switch_tab("jnt"))
self.buttons["tab_ark"].clicked.connect(lambda: utils_behaviour.switch_tab("ark"))
self.buttons["tab_ctr"].clicked.connect(lambda: utils_behaviour.switch_tab("ctr"))
# 底部滑块连接
self.controls["bottom_main_slider"].valueChanged.connect(utils_behaviour.update_main_value)
# 底部按钮连接
self.buttons["exchange_from_expression"].clicked.connect(utils_behaviour.exchange_from_expression)
self.buttons["reset_selected_expression"].clicked.connect(utils_behaviour.reset_selected_expression)
self.buttons["import_expression"].clicked.connect(utils_behaviour.import_expression)
self.buttons["control_panel_search"].clicked.connect(utils_behaviour.control_panel_search)
self.buttons["select_related_keys"].clicked.connect(utils_behaviour.select_related_keys)
self.buttons["import_map_expression"].clicked.connect(utils_behaviour.import_map_expression)