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微信公众平台oauth2.0网页授权登录类的封装demo
一.微信授权使用的是OAuth2.0授权的方式.主要有以下简略步骤: 第一步:用户同意授权,获取code 第二步:通过code换取网页授权access_token 第三步:拉取用户信息(需scope为 ...
- Could not create pool connection. The DBMS driver exception was: null, message from server: "Host '192.168.XX.XX' is blocked because of many connection errors; unblock with 'mysqladmin flush-hosts'
早上打开浏览器准备登陆某个系统,发现Error 404--Not Found,有点奇怪,这个服务器应该没人用了才对,然后到weblogic后台去看日志,报如下错误: "Could not c ...
- 2017-2018-1 20155201 《信息安全系统设计基础》 pwd命令的实现
2017-2018-1 20155201 <信息安全系统设计基础> pwd命令的实现 一.对pwd命令的学习 在终端中输入man pwd查看手册中对pwd这一命令的解释: 以绝对路径的方式 ...
- Beta冲刺NO.6
Beta冲刺 第六天 1. 昨天的困难 1.对于设计模式的应用不熟悉,所以在应用上出现了很大的困难. 2.SSH中数据库的管理是用HQL语句实现的,所以在多表查询时出现了很大的问题. 3.页面结构太凌 ...
- B-dya6
1.昨天的困难,今天解决的进度,以及明天要做的事情 昨天的困难:在导入导出方面遇到了困难,导出的文件不能直接导入. 今天解决的进度:完成了登录页面的背景设计,并再次测试了整个系统的功能. 明天要做的事 ...
- 2017北京国庆刷题Day4 morning
期望得分:0+40+30=70 实际得分:0+10+10=20 题目修改:只能由0变1,只能用一次操作 大模拟 #include<cstdio> #include<cstring&g ...
- animation & @keyframes 实现loading效果
效果图截图如下: 直接上代码: html <!DOCTYPE html> <html> <head> <meta charset="utf-8&qu ...
- java实现红包的分配算法
个人推测,微信红包在发出的时候已经分配好金额.比如一个10元的红包发给甲乙丙三个人,其实在红包发出去的时候,已经确定了第一个会领取多少,第二个会领取多少金额. 而不是在领取的时候才计算的.下面贴出实现 ...
- B+树介绍
B+树 B+树和二叉树.平衡二叉树一样,都是经典的数据结构.B+树由B树和索引顺序访问方法(ISAM,是不是很熟悉?对,这也是MyISAM引擎最初参考的数据结构)演化而来,但是在实际使用过程中几乎已经 ...
- Java KeyTool command
Create a new key: keytool -genkey -alias keyAlias -keyalg RSA -validity 1000 -keystore d:\keyPath\k ...