界面修改以及显示

This commit is contained in:
2025-10-31 18:52:31 +08:00
parent bd0815d0e7
commit 290324b5e4
93 changed files with 17169 additions and 12529 deletions

View File

@ -1,36 +1,62 @@
from PySide6.QtWidgets import QPushButton
from PySide6.QtGui import QPainter, QColor, QFont, Qt, QBrush
from PySide6.QtWidgets import QPushButton
from PySide6.QtGui import QPainter, QFont, Qt, QPixmap, QColor
from PySide6.QtCore import QRectF
import resources.resources_rc
# 用于 开、拱 等功能按钮
class CircularButton(QPushButton):
"""自定义圆形按钮,处理 hover 颜色变化"""
"""自定义圆形按钮"""
def __init__(self, text, parent=None):
super().__init__(text, parent)
self.setFixedSize(40, 40)
# self.normal_color = QColor(1, 18, 98) # 正常颜色 (RGB: 1,18,98)
self.normal_color = QColor(86, 119, 252)
self.hover_color = QColor(24, 253, 255) # hover 颜色 (RGB: 24,253,255)
self.current_color = self.normal_color
# 设置按钮大小为41x41与图片尺寸一致
self.setFixedSize(41, 41)
# 加载背景图片
self.normal_pixmap = QPixmap(":/icons/images/圆形按钮背景1.png") # 正常状态图片 需要修改为实际的路径
self.hover_pixmap = QPixmap(":/icons/images/圆形按钮背景2.png") # hover状态图片 需要修改为实际的路径
# 确保图片加载成功(可选:添加错误处理)
if self.normal_pixmap.isNull():
print("警告圆形按钮背景1.png 加载失败")
if self.hover_pixmap.isNull():
print("警告圆形按钮背景2.png 加载失败")
# 字体初始化状态和颜色
self.is_hover = False
self.normal_text_color = QColor(6, 224, 239)
self.hover_text_color = QColor(3, 20, 100)
# 去除默认样式
self.setStyleSheet("background: transparent; border: none;")
def enterEvent(self, event):
self.current_color = self.hover_color
self.update()
self.is_hover = True
self.update() # 触发重绘
super().enterEvent(event)
def leaveEvent(self, event):
self.current_color = self.normal_color
self.update()
self.is_hover = False
self.update() # 触发重绘
super().leaveEvent(event)
def paintEvent(self, event):
painter = QPainter(self)
painter.setRenderHint(QPainter.Antialiasing)
# 绘制圆形背景
painter.setBrush(QBrush(self.current_color))
painter.setPen(Qt.NoPen)
painter.drawEllipse(0, 0, self.width(), self.height())
# 绘制白色文字
painter.setPen(Qt.white)
painter.setFont(QFont("Arial", 10, QFont.Bold))
painter.drawText(self.rect(), Qt.AlignCenter, self.text())
painter.setRenderHint(QPainter.RenderHint.Antialiasing) # 抗锯齿
# 绘制对应状态的背景图片
current_pixmap = self.hover_pixmap if self.is_hover else self.normal_pixmap
if not current_pixmap.isNull():
# 绘制图片并适应按钮大小(保持圆形)
painter.drawPixmap(self.rect(), current_pixmap)
# 绘制文字
# painter.setPen(self.hover_text_color if self.is_hover else self.normal_text_color)
# print("self.is_hover: ", self.is_hover)
if self.is_hover: # 根据鼠标是否解除修改字体颜色
painter.setPen(self.hover_text_color)
else:
painter.setPen( self.normal_text_color)
painter.setFont(QFont("Arial", 12, QFont.Weight.Bold))
# 在按钮中心绘制文字
painter.drawText(self.rect(), Qt.AlignmentFlag.AlignCenter, self.text())