云主机测评网云主机测评网云主机测评网

云主机测评网
www.yunzhuji.net

pyqt实现 按钮呼吸背景

简介

呼吸背景效果是一种常见的UI设计元素,它可以使按钮在鼠标悬停时产生渐变颜色的效果,给人一种视觉上的呼吸感,在PyQt中,我们可以通过重写QWidget的paintEvent方法来实现这种效果。

(图片来源网络,侵删)

实现步骤

1、导入所需库

2、创建自定义按钮类

3、重写paintEvent方法

4、设置按钮属性

5、测试呼吸背景效果

详细代码

导入所需库
from PyQt5.QtWidgets import QApplication, QWidget, QPushButton
from PyQt5.QtCore import Qt, QTimer, QRect
from PyQt5.QtGui import QPainter, QBrush, QColor
import sys
class BreathingButton(QPushButton):
    def __init__(self, parent=None):
        super(BreathingButton, self).__init__(parent)
        self._timer = QTimer(self)
        self._timer.setInterval(100)
        self._timer.timeout.connect(self.update)
        self._timer.start()
        self._color1 = QColor(255, 0, 0)
        self._color2 = QColor(0, 255, 0)
        self._color3 = QColor(0, 0, 255)
        self._color4 = QColor(255, 255, 255)
        self._current_color = self._color1
        self._brush = QBrush(self._current_color)
        self.setGeometry(100, 100, 200, 60)
        self.setText("点击我")
        self.setStyleSheet("backgroundcolor: transparent;")
        self.show()
    def paintEvent(self, event):
        painter = QPainter(self)
        painter.setRenderHint(QPainter.Antialiasing)
        painter.setBrush(self._brush)
        painter.drawRect(event.rect())
        if self.isEnabled():
            if self.hasFocus():
                if self._current_color == self._color1:
                    self._current_color = self._color2
                else:
                    self._current_color = self._color1
            elif self._current_color == self._color1:
                self._current_color = self._color4
            else:
                self._current_color = self._color3
        painter.setBrush(QBrush(self._current_color))
        painter.drawRect(event.rect())
        painter.end()
        super(BreathingButton, self).paintEvent(event)
if __name__ == "__main__":
    app = QApplication(sys.argv)
    button = BreathingButton()
    sys.exit(app.exec_())

单元表格

序号 方法/属性 说明
1 __init__ 初始化自定义按钮,设置定时器和颜色
2 paintEvent 重写绘制事件,实现呼吸背景效果
3 setGeometry 设置按钮位置和大小
4 setText 设置按钮文本
5 setStyleSheet 设置按钮样式,使其透明
打赏
版权声明:主机测评不销售、不代购、不提供任何支持,仅分享信息/测评(有时效性),自行辨别,请遵纪守法文明上网。
文章名称:《pyqt实现 按钮呼吸背景》
文章链接:https://www.yunzhuji.net/jishujiaocheng/46164.html

评论

  • 验证码