turns-00048.parquet:35537
55c0dc2034448f7774cdb016
turn 26/56gpt-4o-2024-08-06ChineseJapan308 words
degenerate_repetitionAbsentFinal dense release
USER
把现在的三个HP,ATK,DEF文字向上2px,数值向下2px
ASSISTANT
要将属性名称文字上移 2 像素,以及将数值下移 2 像素,你可以根据这些要求调整属性名称和数值的 `y` 坐标。下面是更新后的代码:
```python
class LightConeFrame(QWidget):
def __init__(self, character, affix_mapping, parent=None, bg_color="#262634"):
super().__init__(parent)
self.bg_color = bg_color
self.character = character
self.affix_mapping = affix_mapping
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
rect = self.rect()
# 填充背景色
painter.fillRect(rect, QColor(self.bg_color))
# 绘制右侧分割线
pen = painter.pen()
pen.setWidth(2)
pen.setColor(QColor('#444444'))
painter.setPen(pen)
# 计算分割线的起始和终止点位置
x_position = rect.width() - 320
y_end = 192
painter.drawLine(x_position, 0, x_position, y_end)
# 绘制表格框线
pen.setWidth(5)
pen.setColor(QColor('#444444'))
painter.setPen(pen)
painter.drawRoundedRect(rect.adjusted(1, 1, -1, -1), 30, 30)
# 绘制水平分割线
horizontal_line_y_position = 192
painter.drawLine(0, horizontal_line_y_position, rect.width(), horizontal_line_y_position)
# 绘制属性图标、名称及数值
for idx, attribute in enumerate(self.character['light_cone'].get('attributes', [])):
attr_name = attribute['name']
attr_value = float(attribute['value'])
attr_display = f"{attr_value:.3f}"
icon_file = self.affix_mapping.get(attr_name, None)
if icon_file:
icon_path = f"image/buffdata/{icon_file}.png"
if os.path.exists(icon_path):
icon_pixmap = QPixmap(icon_path).scaled(64, 64, Qt.KeepAspectRatio, Qt.SmoothTransformation)
# 上移图标4px
icon_y = (idx * 64) - 4
# 绘制图标:与框线对齐
painter.drawPixmap(x_position + 10, icon_y, icon_pixmap)
# 设置淡灰色
light_gray = QColor(169, 169, 169)
painter.setPen(light_gray)
# 绘制属性名称,向上移动2像素
font = painter.font()
font.setBold(True)
font.setPointSize(10)
painter.setFont(font)
# 设置属性名称的位置(向上移动2像素)
name_x = x_position + 80
name_y = (idx * 64) + (64 + self.fontMetrics().height()) // 2 - 2
attr_abbr = self.affix_mapping.get(attr_name, attr_name)
painter.drawText(QRect(name_x, (idx * 64) - 2, 150, 64), Qt.AlignVCenter | Qt.AlignLeft, attr_abbr)
# 计算数字的宽度并调整位置
font.setBold(True)
font.setPointSize(12)
painter.setFont(font)
int_width = self.fontMetrics().width(str(int(attr_value)))
# 设置小数部分的颜色和字体
darker_gray = QColor(105, 105, 105) # 仅小数部分使用的较深灰色
decimal_font = QFont(font) # For decimal part
decimal_font.setPointSize(8) # 更小的字体
decimal_width = QFontMetrics(decimal_font).width(f".{attr_display.split('.')[1]}")
total_width = int_width + decimal_width
text_x = rect.width() - total_width - 17 # 调整数字距离表格末尾为17px
# 将所有数字上移5像素后再下移2像素,总计下移2像素
int_y = icon_y + (64 + self.fontMetrics().height()) // 2 - 5 + 2
# 绘制整数部分
painter.drawText(QPoint(text_x, int_y), str(int(attr_value)))
# 绘制小数部分
painter.setFont(decimal_font)
painter.setPen(darker_gray) # 使用较深颜色仅用于小数
painter.drawText(QPoint(text_x + int_width, int_y), f".{attr_display.split('.')[1]}")
super().paintEvent(event)
```
### 说明:
- **属性名称的移动**:
- 属性名称的 `y` 坐标上移 2 像素:在 `name_y = (idx * 64) + (64 + self.fontMetrics().height()) // 2 - 2` 中进行了更改。
- **数值的移动**:
- 数值的 `y` 坐标相对原图标位置下移 2 像素:将在计算中使用 `int_y = icon_y + (64 + self.fontMetrics().height()) // 2 - 5 + 2`。
通过这样调整,每一部分都能达到你所要求的视觉效果。如果还需要其他的进一步调整,请随时告诉我!