Update
This commit is contained in:
@@ -73,6 +73,10 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
self.main_widget = QtWidgets.QWidget()
|
||||
self.main_widget.setObjectName("riggingMainWidget")
|
||||
|
||||
# 初始化DNA文件列表和按钮尺寸
|
||||
self.dna_files = []
|
||||
self.dna_button_size = (120, 150)
|
||||
|
||||
# 初始化UI
|
||||
self.create_widgets()
|
||||
self.create_layouts()
|
||||
@@ -81,6 +85,29 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
# 更新UI文本
|
||||
self.update_language()
|
||||
|
||||
# 加载DNA文件和预览图 - 移到最后执行确保所有控件已创建
|
||||
self.load_dna_files()
|
||||
|
||||
def closeEvent(self, event):
|
||||
"""
|
||||
窗口关闭事件处理
|
||||
清理缓存和资源
|
||||
"""
|
||||
try:
|
||||
# 清理图片缓存
|
||||
from scripts.utils import utils_rigging
|
||||
utils_rigging.clear_pixmap_cache()
|
||||
|
||||
# 调用父类的关闭事件
|
||||
super().closeEvent(event)
|
||||
except Exception as e:
|
||||
print(f"窗口关闭处理失败: {str(e)}")
|
||||
import traceback
|
||||
traceback.print_exc()
|
||||
|
||||
# 确保窗口正常关闭
|
||||
event.accept()
|
||||
|
||||
#========================================= WIDGET =======================================
|
||||
def create_widgets(self):
|
||||
"""
|
||||
@@ -121,47 +148,6 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
self.controls["presets_flow_layout"].setContentsMargins(5, 5, 5, 5)
|
||||
self.controls["presets_flow_layout"].setSpacing(10)
|
||||
|
||||
# 添加测试预设项
|
||||
for i in range(6): # 添加6个预设项,如图中所示
|
||||
col = i % 6
|
||||
row = i // 6
|
||||
|
||||
preset_widget = QtWidgets.QWidget()
|
||||
preset_widget.setObjectName(f"preset_{i}")
|
||||
preset_widget.setMinimumSize(120, 150) # 设置预设项大小
|
||||
preset_widget.setMaximumSize(120, 150)
|
||||
|
||||
# 预设布局
|
||||
preset_layout = QtWidgets.QVBoxLayout(preset_widget)
|
||||
preset_layout.setContentsMargins(0, 0, 0, 0)
|
||||
preset_layout.setSpacing(2)
|
||||
|
||||
# 预设图片
|
||||
preset_image = QtWidgets.QLabel()
|
||||
preset_image.setObjectName(f"preset_image_{i}")
|
||||
preset_image.setMinimumSize(120, 120)
|
||||
preset_image.setMaximumSize(120, 120)
|
||||
preset_image.setScaledContents(True)
|
||||
preset_image.setStyleSheet("background-color: #333333; border: 1px solid #555555;")
|
||||
|
||||
# 加载测试图片
|
||||
pixmap = QtGui.QPixmap(os.path.join(ASSETS_PATH, "metahuman_placeholder.png"))
|
||||
if not pixmap.isNull():
|
||||
preset_image.setPixmap(pixmap)
|
||||
|
||||
# 预设标签
|
||||
preset_label = QtWidgets.QLabel("METAHUMAN")
|
||||
preset_label.setObjectName(f"preset_label_{i}")
|
||||
preset_label.setAlignment(QtCore.Qt.AlignCenter)
|
||||
preset_label.setStyleSheet("color: white; background-color: rgba(0, 0, 0, 128);")
|
||||
|
||||
# 添加到布局
|
||||
preset_layout.addWidget(preset_image)
|
||||
preset_layout.addWidget(preset_label)
|
||||
|
||||
# 添加到流布局
|
||||
self.controls["presets_flow_layout"].addWidget(preset_widget, row, col)
|
||||
|
||||
# 设置滚动区域内容
|
||||
self.controls["presets_scroll_area"].setWidget(self.controls["presets_content"])
|
||||
|
||||
@@ -171,7 +157,7 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
self.controls["presets_slider_layout"].setSpacing(5)
|
||||
|
||||
# 数量显示
|
||||
self.controls["presets_count_label"] = QtWidgets.QLabel("99")
|
||||
self.controls["presets_count_label"] = QtWidgets.QLabel("0")
|
||||
self.controls["presets_count_label"].setObjectName("presetsCountLabel")
|
||||
self.controls["presets_count_label"].setAlignment(QtCore.Qt.AlignCenter)
|
||||
self.controls["presets_count_label"].setStyleSheet("font-weight: bold;")
|
||||
@@ -486,14 +472,15 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
# 设置分割器的伸缩因子
|
||||
for i in range(self.splitters["main_splitter"].count()):
|
||||
self.splitters["main_splitter"].setStretchFactor(i, 1)
|
||||
|
||||
|
||||
# 监听预设内容区域大小变化,更新DNA网格布局
|
||||
self.controls["presets_content"].resizeEvent = lambda event: utils_rigging.on_presets_content_resize(event, self)
|
||||
|
||||
#======================================= FUNCTIONS ======================================
|
||||
def create_connections(self):
|
||||
"""
|
||||
创建信号连接,设置UI控件的交互行为
|
||||
"""
|
||||
# 导入绑定工具函数
|
||||
from scripts.utils import utils_rigging
|
||||
|
||||
# 预设导入和导出按钮
|
||||
self.buttons["export_presets"].clicked.connect(utils_rigging.export_dna)
|
||||
@@ -506,4 +493,25 @@ class RiggingUI(ui_utils.BaseUI):
|
||||
# 底部按钮连接
|
||||
self.buttons["remove_all"].clicked.connect(utils_rigging.remove_all)
|
||||
self.buttons["import_skeleton"].clicked.connect(utils_rigging.import_skeleton)
|
||||
self.buttons["build_rigging"].clicked.connect(utils_rigging.build_rigging)
|
||||
self.buttons["build_rigging"].clicked.connect(utils_rigging.build_rigging)
|
||||
|
||||
def load_dna_files(self):
|
||||
"""
|
||||
加载DNA文件和预览
|
||||
在所有UI控件创建完成后执行
|
||||
"""
|
||||
try:
|
||||
# 从utils_rigging加载DNA文件和预览图
|
||||
from scripts.utils import utils_rigging
|
||||
self.dna_files = utils_rigging.get_dna_files()
|
||||
|
||||
# 更新预设数量标签
|
||||
if 'presets_count_label' in self.controls:
|
||||
self.controls['presets_count_label'].setText(str(len(self.dna_files)))
|
||||
|
||||
# 调用utils_rigging中的加载预览按钮函数
|
||||
utils_rigging.load_dna_preview_buttons(self)
|
||||
except Exception as e:
|
||||
import traceback
|
||||
print(f"加载DNA文件失败: {str(e)}")
|
||||
traceback.print_exc()
|
@@ -20,6 +20,34 @@ QLabel#mainTitleLabel {
|
||||
padding: 5px;
|
||||
}
|
||||
|
||||
/* ==================== DNA预览按钮样式 ==================== */
|
||||
QPushButton.dna-preview-button {
|
||||
background-color: #2D2D30;
|
||||
border: 1px solid #3E3E42;
|
||||
border-radius: 8px;
|
||||
padding: 0;
|
||||
margin: 4px;
|
||||
text-align: center;
|
||||
}
|
||||
|
||||
QPushButton.dna-preview-button:hover {
|
||||
border: 1px solid #007ACC;
|
||||
background-color: #3E3E42;
|
||||
}
|
||||
|
||||
QPushButton.dna-preview-button:pressed {
|
||||
border: 1px solid #0062A3;
|
||||
background-color: #1E1E1E;
|
||||
}
|
||||
|
||||
QPushButton.dna-preview-button QLabel {
|
||||
color: #FFFFFF;
|
||||
font-size: 11px;
|
||||
border-radius: 0;
|
||||
border-bottom-left-radius: 7px;
|
||||
border-bottom-right-radius: 7px;
|
||||
}
|
||||
|
||||
/* ==================== 标签页样式 ==================== */
|
||||
QTabWidget::pane {
|
||||
border: 1px solid #1E1E1E;
|
||||
|
Reference in New Issue
Block a user