Files
Feeding_control_system/view/widgets/circular_button.py

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())