pyqt颜色变换动画效果

pyqt颜色变换动画效果

  • QPropertyAnimation介绍
  • 颜色变换效果
  • 代码

QPropertyAnimation介绍

QPropertyAnimation 是 PyQt中的一个类,它用于对 Qt 对象的属性进行动画处理。通过使用 QPropertyAnimation,你可以平滑地改变一个对象的属性值,例如窗口的位置、大小、颜色等。

颜色变换效果

在这里插入图片描述

代码

from PyQt5.QtWidgets import (QWidget, QApplication, QPushButton,
        QLabel, QHBoxLayout, QSizePolicy)
from PyQt5.QtGui import QColor
from PyQt5.QtCore import QPropertyAnimation, pyqtProperty  # 这里添加了pyqtProperty的导入
import sys

# 自定义QLabel类,用于支持通过属性系统改变文本颜色
class MyLabel(QLabel):

    # 初始化方法
    def __init__(self, text):
        super().__init__(text)

        # 私有方法,用于设置颜色

    def _set_color(self, col):
        # 获取当前的调色板
        palette = self.palette()
        # 设置前景色(即文本颜色)
        palette.setColor(self.foregroundRole(), col)
        # 应用新的调色板
        self.setPalette(palette)

        # 使用pyqtProperty装饰器定义color属性,使其可通过QPropertyAnimation访问

    color = pyqtProperty(QColor, fset=_set_color)


# 主窗口类
class Example(QWidget):

    def __init__(self):
        super().__init__()

        # 初始化UI
        self.initUI()

    def initUI(self):
        # 创建一个水平布局
        hbox = QHBoxLayout(self)

        # 创建一个按钮,并添加到布局中
        self.button = QPushButton("Start", self)
        self.button.setSizePolicy(QSizePolicy.Fixed, QSizePolicy.Fixed)
        hbox.addWidget(self.button)

        # 在布局中添加一些间距
        hbox.addSpacing(40)

        # 创建一个自定义标签,并设置字体大小和文本,然后添加到布局中
        self.label = MyLabel("颜色")
        font = self.label.font()
        font.setPointSize(35)
        self.label.setFont(font)
        hbox.addWidget(self.label)

        # 创建一个QPropertyAnimation实例,用于动画化MyLabel的color属性
        self.anim = QPropertyAnimation(self.label, b"color")
        # 设置动画的持续时间
        self.anim.setDuration(1000)
        # 设置动画的循环次数
        self.anim.setLoopCount(6)
        # 设置动画的起始值(颜色)
        self.anim.setStartValue(QColor(0, 0, 0))
        # 设置动画的结束值(颜色)
        self.anim.setEndValue(QColor(255, 0, 0))

        # 连接按钮的clicked信号到动画的start槽
        self.button.clicked.connect(self.anim.start)

        # 设置窗口的几何位置和大小
        self.setGeometry(300, 300, 380, 250)
        # 设置窗口标题
        self.setWindowTitle('Color anim')
        # 显示窗口
        self.show()


if __name__ == "__main__":
    # 创建QApplication实例
    app = QApplication([])
    # 创建Example窗口实例
    ex = Example()
    # 显示窗口
    ex.show()
    # 运行应用程序
    sys.exit(app.exec_())
  • 9
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 打赏
    打赏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

立秋6789

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值