36 lines
1.4 KiB
Python
36 lines
1.4 KiB
Python
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()) |