from PySide6.QtWidgets import QPushButton from PySide6.QtGui import QPainter, QColor, QFont, Qt, QBrush 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 self.setStyleSheet("background: transparent; border: none;") def enterEvent(self, event): self.current_color = self.hover_color self.update() super().enterEvent(event) def leaveEvent(self, event): self.current_color = self.normal_color 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())