pyqt5 动画学习(二) 改变控件颜色
上一篇我们通过 self.anim = QPropertyAnimation(self.label, b"geometry")创建了一个动画,改变了空间的大小,这次我们来改变控件的颜色
但是label是没有color这个动画属性的,即设置 self.anim = QPropertyAnimation(self.label, b"color")是无效的
为此,我们要重写label类,赋予一个color属性,例如:
class MyLabel(QLabel):
def __init__(self, text, para):
super().__init__(text, para) def _set_color(self, col):
self.setAutoFillBackground(True)
palette = self.palette()
palette.setColor(self.backgroundRole(), col)
self.setPalette(palette) color = pyqtProperty(QColor, fset=_set_color)
还是通过调色板来改变label的颜色, 然后我们自定义一个名为"color"的属性
color = pyqtProperty(QColor, fset=_set_color)
定义以后我们就可以正常使用这个属性了,例如
self.anim = QPropertyAnimation(self.label, b"color")
下面是程式完整代码:
#!/usr/bin/python3
# -*- coding: utf-8 -*- """
PyQt5 Animation tutorial This program animates the color of a
widget with QPropertyAnimation. Author: Seshigure 401219180@qq.com
Last edited: 2018.03.02
""" from PyQt5.QtWidgets import *
from PyQt5.QtGui import *
from PyQt5.QtCore import * class MyLabel(QLabel):
def __init__(self, text, para):
super().__init__(text, para) def _set_color(self, col):
self.setAutoFillBackground(True)
palette = self.palette()
palette.setColor(self.backgroundRole(), col)
self.setPalette(palette) color = pyqtProperty(QColor, fset=_set_color) class Example(QWidget):
def __init__(self):
super(Example, self).__init__()
self.initUI() def initUI(self):
self.button = QPushButton("Start", self)
self.button.clicked.connect(self.doAnim)
self.button.move(30, 30) self.label = MyLabel("changeColor", self)
self.label._set_color(QColor(255, 50, 50, 50))
self.label.setGeometry(150, 30, 100, 100) self.setGeometry(300, 300, 380, 300)
self.setWindowTitle('Animation')
self.show() def doAnim(self):
self.anim = QPropertyAnimation(self.label, b"color")
self.anim.setDuration(3000)
self.anim.setStartValue(QColor(255, 50, 50, 50)) # 粉色
self.anim.setKeyValueAt(0.5, QColor(255, 0, 0, 250)) # 红色
self.anim.setEndValue(QColor(255, 250, 50, 50)) # 米黄
self.anim.start() if __name__ == "__main__":
app = QApplication([])
ex = Example()
ex.show()
app.exec_()
界面预览图如下:

备注:
1、label没有color动画属性,所以我们得重写label
2、self.anim.setKeyValueAt(0.5, QColor(255, 0, 0, 250))这里使用了一个关键帧,让动画完成 粉色>红色>米黄的颜色转换
pyqt5 动画学习(二) 改变控件颜色的更多相关文章
- MFC改变控件颜色
from http://www.cppblog.com/FandyM/archive/2010/07/21/120972.aspx MFC应用程序中,要改变控件的背景色可通过重载OnCtlColor( ...
- VC 使用OnCtlColor函数来改变控件颜色(引用)
在MFC类库提供了CWnd::OnCtlColor函数,在工作框架的子窗口被重画时将调用该成员函数.因此可以重载WM_CTLCOLOR消息的响应函数.此函数的原型:afx_msg HBRUSH OnC ...
- 从一点儿不会开始——Unity3D游戏开发学习(二) ——GUI控件之Button
一些废话 我在上一篇“一点儿不会”的系列随笔中说大概一周会发个2~3篇关于Unity的学习笔记.可这就两周过去了,我还停留在一篇的进度上,主要是这两周发生了一些事情导致我更新缓慢.其实截至目前为止,上 ...
- MFC消息 OnCtlColor 改变控件颜色
OnCtlColor 有以下几个宏定义 #define CTLCOLOR_MSGBOX 0 #define CTLCOLOR_EDIT 1 #defin ...
- iOS学习笔记——基础控件(上)
本篇简单罗列一下一些常用的UI控件以及它们特有的属性,事件等等.由于是笔记,相比起来不会太详细 UIView 所有UI控件都继承于这个UIView,它所拥有的属性必是所有控件都拥有,这些属性都是控件最 ...
- VC 对话框背景颜色、控件颜色(三种方法)
系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色.控件颜色 既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框.为对话框设置背景颜色 ...
- VC 对话框背景颜色、控件颜色
系统环境:Windows 7软件环境:Visual C++ 2008 SP1本次目的:为对话框设置背景颜色.控件颜色 既然MFC对话框不好开发,那么现在我们来开始美化我们的对话框.为对话框设置背景颜色 ...
- WPF 动画:同为控件不同命 - 简书
原文:WPF 动画:同为控件不同命 - 简书 1. 及格与优秀 读大学的时候,有一门课的作业是用 PPT 展示. 但是我们很多同学都把 PPT 当做 Word 来用,就单纯地往里面堆文字. 大家都单纯 ...
- 《深入浅出WPF》学习总结之控件与布局
一.控件到底是什么 控件的本质是“数据+算法”——用户输入原始数据,算法处理原始数据并得到结果数据.问题就在于程序如何将结果数据展示给用户.同样一组数据,你可以使用LED阵列显示出来,或者是以命令行模 ...
随机推荐
- 基于php编写的新闻类爬虫,插入WordPress数据库
这个爬虫写的比较久远,很久没有更新博客了. 1.首先思路是:通过php的curl_setopt()函数可以方便快捷的抓取网页. 2.什么样的新闻吸引人呢,当然的热点新闻了.这里选百度的搜索风云榜,获取 ...
- 【备忘】Idea的那些事
说到Java的IDE,似乎eclipse和Idea是目前的主流.然而,OO的课程组却一直在推荐使用eclipse,于是很多人就这样错过了Idea这样强大的IDE工具.本文将会对于Idea和Idea的一 ...
- oracle导出dmp文件的2种方法
使用exp和expdp导出数据 1.exp导出数据命令 exp gd_base/@192.168.13.211/oanet file=D:\export\gd_base.dmp log=D:\expo ...
- 第二次作业:软件分析之Steam的前世今生
摘要:本次作业我将介绍一下Steam的相关内容,以及对Steam的相关调研测评,以及需求分析,最后就是对Steam的建议以及在中国的发展提出相应的建议 一.相关信息 Steam是一个整合游戏 ...
- Beta预备会议
1. 讨论组长是否重选的议题和结论. 我们小组决定组长更换为林洋洋同学,他Web开发经验比较丰富,对任务的分配会更加明确,由于上一阶段中存在进度偏慢的问题,我们希望在Beta阶段通过更好的分工安排来保 ...
- 201621123062《java程序设计》第三周作业总结
1.本周学习总结 初学面向对象,会学习到很多碎片化的概念与知识.尝试学会使用 将这些碎片化的概念.知识点组织起来.请使用工具画出本周学习到的知识点及知识点之间的联系.步骤如下: 1.1写出你认为本周学 ...
- javabean 是什么?
JavaBean规范 Bean的中文含义是“豆子”,顾名思义,JavaBean是指一段特殊的Java类, 就是有默然构造方法,只有get,set的方法的java类的对象. 专业点解释是: JavaBe ...
- Vue filter介绍及详细使用
Vue filter介绍及其使用 VueJs 提供了强大的过滤器API,能够对数据进行各种过滤处理,返回需要的结果. Vue.js自带了一些默认过滤器例如: capitalize 首字母大写 uppe ...
- $(function(){})和window.onload的区别
(1)$(function(){}):DOM节点创建 完成才执行 (2)window.onload:页面所有资源(JS/CSS)加载完成才执行
- SQL SERVER 字符串按数字排序
需求是这样的: 数据库表里面有一个字段类型是nvachar,存的值是数字和字符混合的,要实现先按数字排序,再按字母倒序. 思路: 考虑这个字段的值是否是有规律可循的,把要按数字排序的部分转换为数字,再 ...