Update
This commit is contained in:
@@ -265,17 +265,19 @@ def create_dna_preview_button(dna_info, item_size, on_click_callback):
|
||||
|
||||
# 创建垂直布局
|
||||
layout = QtWidgets.QVBoxLayout(dna_button)
|
||||
layout.setContentsMargins(2, 2, 2, 2)
|
||||
layout.setSpacing(1) # 更小的间距
|
||||
layout.setContentsMargins(4, 4, 4, 4) # 设置小的内边距,让按钮内容不会顶到边缘
|
||||
layout.setSpacing(2) # 图像和文字之间的小间距
|
||||
|
||||
# 创建图像标签
|
||||
img_label = QtWidgets.QLabel()
|
||||
img_label.setAlignment(QtCore.Qt.AlignCenter)
|
||||
|
||||
# 加载并缩放图像
|
||||
img_height = int(item_size[1] * 0.8) # 图像占80%高度
|
||||
img_width = item_size[0] - 4 # 减去边距
|
||||
# 计算图像区域高度 - 预留足够空间给文字
|
||||
text_height = 20 # 文字区域高度
|
||||
img_height = item_size[1] - text_height - layout.contentsMargins().top() - layout.contentsMargins().bottom() - layout.spacing()
|
||||
img_width = item_size[0] - layout.contentsMargins().left() - layout.contentsMargins().right()
|
||||
|
||||
# 加载并缩放图像
|
||||
pixmap = QtGui.QPixmap(dna_info['image_path'])
|
||||
if pixmap.isNull():
|
||||
print(f"错误: 无法加载图像 {dna_info['image_path']}")
|
||||
@@ -293,30 +295,32 @@ def create_dna_preview_button(dna_info, item_size, on_click_callback):
|
||||
|
||||
# 设置图像标签的图像
|
||||
img_label.setPixmap(pixmap)
|
||||
img_label.setFixedHeight(img_height)
|
||||
img_label.setMinimumHeight(img_height)
|
||||
img_label.setMaximumHeight(img_height)
|
||||
|
||||
# 创建文本标签
|
||||
text_label = QtWidgets.QLabel(dna_info['name'])
|
||||
text_label.setAlignment(QtCore.Qt.AlignCenter)
|
||||
text_label.setStyleSheet("""
|
||||
color: white;
|
||||
font-size: 9px; /* 更小的字体 */
|
||||
font-size: 10px;
|
||||
font-weight: bold;
|
||||
margin-top: 0px;
|
||||
padding-top: 0px;
|
||||
padding: 2px;
|
||||
""")
|
||||
text_label.setWordWrap(True) # 允许文本换行
|
||||
text_label.setFixedHeight(15) # 固定文本高度
|
||||
text_label.setWordWrap(True)
|
||||
text_label.setFixedHeight(text_height)
|
||||
|
||||
# 添加控件到布局
|
||||
layout.addWidget(img_label)
|
||||
layout.addWidget(text_label)
|
||||
layout.addWidget(img_label, 1) # 图像区域占据更多空间
|
||||
layout.addWidget(text_label, 0) # 文字区域固定高度
|
||||
|
||||
# 设置整体样式
|
||||
dna_button.setStyleSheet("""
|
||||
background-color: #333333;
|
||||
border: 1px solid #444444;
|
||||
border-radius: 3px;
|
||||
# 设置整体样式 - 包括边框和圆角
|
||||
dna_button.setStyleSheet(f"""
|
||||
QWidget#{dna_button.objectName()} {{
|
||||
background-color: #333333;
|
||||
border: 1px solid #444444;
|
||||
border-radius: 8px;
|
||||
}}
|
||||
""")
|
||||
|
||||
# 创建透明按钮覆盖整个区域以处理点击
|
||||
@@ -326,12 +330,17 @@ def create_dna_preview_button(dna_info, item_size, on_click_callback):
|
||||
#overlayButton {
|
||||
background-color: transparent;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
}
|
||||
#overlayButton:hover {
|
||||
background-color: rgba(0, 122, 204, 0.2);
|
||||
border: 1px solid #007ACC;
|
||||
border-radius: 8px;
|
||||
}
|
||||
#overlayButton:pressed {
|
||||
background-color: rgba(0, 122, 204, 0.3);
|
||||
border: 1px solid #007ACC;
|
||||
border-radius: 8px;
|
||||
}
|
||||
""")
|
||||
overlay_button.resize(dna_button.size())
|
||||
@@ -349,9 +358,14 @@ def create_dna_preview_button(dna_info, item_size, on_click_callback):
|
||||
# 返回一个简单的替代按钮
|
||||
fallback_widget = QtWidgets.QWidget()
|
||||
fallback_widget.setFixedSize(item_size[0], item_size[1])
|
||||
fallback_widget.setStyleSheet("""
|
||||
background-color: #333333;
|
||||
border: 1px solid #444444;
|
||||
border-radius: 8px;
|
||||
""")
|
||||
|
||||
fallback_layout = QtWidgets.QVBoxLayout(fallback_widget)
|
||||
fallback_layout.setContentsMargins(2, 2, 2, 2)
|
||||
fallback_layout.setContentsMargins(4, 4, 4, 4)
|
||||
|
||||
fallback_label = QtWidgets.QLabel(dna_info.get('name', 'DNA'))
|
||||
fallback_label.setAlignment(QtCore.Qt.AlignCenter)
|
||||
@@ -362,7 +376,11 @@ def create_dna_preview_button(dna_info, item_size, on_click_callback):
|
||||
# 添加点击功能
|
||||
if on_click_callback:
|
||||
fallback_button = QtWidgets.QPushButton(fallback_widget)
|
||||
fallback_button.setStyleSheet("background: transparent; border: none;")
|
||||
fallback_button.setStyleSheet("""
|
||||
background: transparent;
|
||||
border: none;
|
||||
border-radius: 8px;
|
||||
""")
|
||||
fallback_button.resize(fallback_widget.size())
|
||||
fallback_button.clicked.connect(lambda: on_click_callback(dna_info.get('dna_path', '')))
|
||||
|
||||
@@ -819,7 +837,7 @@ def on_presets_slider_changed(ui_instance, value):
|
||||
# 确保在合理范围内
|
||||
scale_factor = max(0.7, min(1.3, scale_factor))
|
||||
|
||||
# 从基础尺寸计算缩放后的尺寸,保持宽高比
|
||||
# 从基础尺寸计算缩放后的尺寸
|
||||
new_width = int(DEFAULT_DNA_BUTTON_SIZE[0] * scale_factor)
|
||||
new_height = int(DEFAULT_DNA_BUTTON_SIZE[1] * scale_factor)
|
||||
|
||||
@@ -827,8 +845,8 @@ def on_presets_slider_changed(ui_instance, value):
|
||||
new_width = max(60, min(130, new_width))
|
||||
new_height = max(80, min(170, new_height))
|
||||
|
||||
# 确保宽高比例正确 - 约为3:4
|
||||
aspect_ratio = DEFAULT_DNA_BUTTON_SIZE[0] / DEFAULT_DNA_BUTTON_SIZE[1]
|
||||
# 确保宽高比例正确 - 3:4比例
|
||||
aspect_ratio = 0.75 # 宽度/高度 = 3/4
|
||||
|
||||
# 优先以高度为准,调整宽度
|
||||
new_width = int(new_height * aspect_ratio)
|
||||
@@ -845,6 +863,9 @@ def on_presets_slider_changed(ui_instance, value):
|
||||
# 更新按钮尺寸
|
||||
ui_instance.dna_button_size = (new_width, new_height)
|
||||
|
||||
# 强制刷新布局 - 先清空布局,然后重新加载
|
||||
flow_layout = ui_instance.controls["presets_flow_layout"]
|
||||
|
||||
# 重新加载预览按钮
|
||||
load_dna_preview_buttons(ui_instance)
|
||||
|
||||
|
Reference in New Issue
Block a user