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

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/616899.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

day04-常用API

day04 常用API 1.API 概述 API (Application Programming Interface) :应用程序编程接口 编写一个机器人程序去控制机器人踢足球,程序需要向机器人发出向前跑、向后跑、射门、抢球等各种命令。 机器人厂商就会提供一些用于控制机器人的类&#xff0c…

ControlNet++:让AI图像生成更精准、更可控

在人工智能的世界里,文本到图像的生成技术正变得越来越先进。但如何确保生成的图像精确地反映我们的想象呢?最近,一项名为ControlNet的新技术为我们提供了答案。 ControlNet是一种新颖的方法,它通过优化生成图像与给定条件之间的…

C++初学者,使用汉语编程

现在的IDE是完全支持中文编程的,对于C语系的爱好者来说,又可以发挥自己的想象力了。 今天使用一些宏定义写了一个小程序,用于玩弄C。 我喜欢C语言,是因为C语言简单,语法简洁。我也喜欢汉语,因为汉语语法简…

解决axios发送post请求,springMVC接收不到数据问题

今天发现一个问题: vue组件中无法正确接收并处理axios请求 这个问题已经困扰我好久了,在电脑面前坐了两天只能确定前端应该是正确的发送了请求,但发送请求后无法正确接受后端返回的数据。 问题:vue组件无法接受后端数据 错误代码如…

Java---类和对象第一节

目录 1.面向对象初步认识 1.1什么是面向对象 1.2面向对象和面向过程的区别 2.类的定义和使用 2.1简单认识类 2.2类的定义格式 2.3类的实例化 2.4类和对象的说明 3.this关键字 3.1访问本类成员变量 3.2调用构造方法初始化成员变量 3.3this引用的特性 4.对象的构造以…

如何建设智慧党校

随着信息技术的飞速展开,特别是近年移动互联网技术,物联网技术,人工智能技术,大数据数据的深入展开,我国快速的进入信息化社会,信息化对各行各业的改造越来越深入,任何职业,任何安排…

【Python】PYQT5详细介绍

本专栏内容为:Python学习专栏 通过本专栏的深入学习,你可以了解并掌握Python。 💓博主csdn个人主页:小小unicorn ⏩专栏分类:Python 🚚代码仓库:小小unicorn的代码仓库🚚 &#x1f3…

vs2019 STL库里 判断函数类型的模板 is_function_v 与 is_const_v

(1)源代码如下: 经简单代码测试后,得出 vs2019 的 c 编译器 和 其 STL 库的观点与设计:is_const_v 用来判断类型 T 内是否含有 const 修饰符,含有 const 则返回真。但若 T 是含有 const 的引用类型&#xf…

实现红黑树

目录 红黑树的概念 红黑树的节点结构定义 红黑树的插入 红黑树的验证 实现红黑树完整代码 红黑树的概念 红黑树 ,是一种 二叉搜索树 ,但 在每个结点上增加一个存储位表示结点的颜色,可以是 Red 或 Black 。 通过对 任何一条从根到叶子的…

Dato for Mac v5.2.11激活版:掌握时间,掌控生活

在忙碌的生活中,您是否常常觉得时间不够用?Dato for Mac,您的时间管理专家,助您轻松掌控每一天。清晰的日历视图、个性化的提醒功能,让您的日程安排井井有条。无论是工作还是生活,Dato for Mac都能成为您的…

sqli-labs 第八关盲注python脚本

目录 ​编辑 判断库名 1.库名长度 2.库名 import requests import mathurl "http://127.0.0.1/Less-8"def dblength():for i in range(20):payload f"1 and length(database())>{i}-- "data {id: payload}res requests.get(url, paramsdata)if …

深入理解 Kolmogorov–Arnold Networks (KAN)

深入理解 Kolmogorov–Arnold Networks (KAN) 最近,一篇名为 KAN: Kolmogorov–Arnold Network 的论文在机器学习领域引起了广泛关注。这篇论文提出了一种全新的神经网络视角,并提出了一种可以替代现有多层感知器(MLP)的新方案。要…

超高频工业读写器的特点介绍及其适用场景!

超高频工业读写器根据设计方式不同,可分为一体式读写器和分体式读写器,不同读写器特点不同,适用场景也不同,下面我们就一起来了解一下超高频分体读写器适用场景有哪些。 超高频分体读写器介绍 超高频分体读写器是一种射频识别(R…

动态规划算法:⼦数组、⼦串系列(数组中连续的⼀段)

例题一 解法(动态规划): 算法思路: 1. 状态表⽰: 对于线性 dp ,我们可以⽤「经验 题⽬要求」来定义状态表⽰: i. 以某个位置为结尾,巴拉巴拉; ii. 以某个位置…

c++ map,set封装

map 是一个 kv 结构, set 是 k结构。 我们前面模拟实现了 红黑树,但是我们实现的红黑树把 kv 结构写死了,怎么样才能用泛型编程的思想来实现map和set呢 我们先简单看一下原码中是怎么实现的 1.原码实现逻辑 我们打开这里的 stl_set.h 通过…

Win10子系统wsl开机自启动jar包(nginx、redis、apache2、ssh等)

一. 需求背景 最近在研究nextcloud项目,选择了Win10子系统方案,而win10子系统wsl是通过接口实现的,很多linux上的常规操作在wsl上无法实现,比如配置开机自启动jar包以及其他依赖程序。只能通过windows系统重启时,自动执…

数据可视化训练第四天(模拟投掷筛子并且统计频次)

投掷一个筛子 import matplotlib.pyplot as plt from random import randint import numpy as npclass Die:"""模拟投掷筛子"""def __init__(self,num_sides6):self.num_sidesnum_sidesdef roll(self):return randint(1,self.num_sides)num1000…

day05-面向对象内存原理和数组

day05 面向对象内存原理和数组 我们在之前已经学习过创建对象了,那么在底层中他是如何运行的。 1.对象内存图 1.1 Java 内存分配 Java 程序在运行时,需要在内存中分配空间。为了提高运算效率,就对空间进行了不同区域的划分,因为每一片区域…

蓝桥杯-地宫取宝

X 国王有一个地宫宝库,是 nm 个格子的矩阵,每个格子放一件宝贝,每个宝贝贴着价值标签。 地宫的入口在左上角,出口在右下角。 小明被带到地宫的入口,国王要求他只能向右或向下行走。 走过某个格子时,如果那个…

睿尔曼机械臂ROS控制

下载git工程 git clone https://github.com/RealManRobot/rm_robot.git安装配置 catkin build rm_msgs source devel/setup.bash catkin build source setup.bash这里注意,如果采用setup.sh多半不会成功,必须要source setup.bash文件,ros才…