pyqt实现 按钮呼吸背景

简介

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

pyqt实现 按钮呼吸背景
(图片来源网络,侵删)

实现步骤

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 设置按钮样式,使其透明

原创文章,作者:未希,如若转载,请注明出处:https://www.kdun.com/ask/478770.html

本网站发布或转载的文章及图片均来自网络,其原创性以及文中表达的观点和判断不代表本网站。如有问题,请联系客服处理。

(0)
未希新媒体运营
上一篇 2024-04-15 13:18
下一篇 2024-04-15 13:20

相关推荐

发表回复

您的电子邮箱地址不会被公开。 必填项已用 * 标注

产品购买 QQ咨询 微信咨询 SEO优化
分享本页
返回顶部
云产品限时秒杀。精选云产品高防服务器,20M大带宽限量抢购 >>点击进入