pyqt5 动画学习(一) 改变控件大小
入坑pyqt也有半年了,由于人们对事物的审美,静态界面已经不能满足用户,而动画却给人眼前一亮,so,今天来学习pyqt的动画了
由于资料真的是太少,本人也是有啃外国佬的英文进行摸索学习,可能也是触及皮毛,以前全是我的学习笔记以及分析
基础知识就不在这里赘述了,这里直接上干货,下面是使用QPropertyAnimation一个对label大小进行改变的动画:
这里大致介绍一下QPropertyAnimation的方法
QPropertyAnimation methods
The following table shows a few important QPropertyAnimation methods:
| Name | Description |
|---|---|
| start() |
开始动画 |
| stop() | 停止动画 |
| setStartValue() | 设定动画初始值 |
| setEndValue() | 设定动画结束值 |
| setDuration() | 设置动画的时间,单位ms |
| setKeyValueAt() | 创建一个关键帧 |
| setLoopCount() | 设置动画重复次数 |
下面是py3代码
#!/usr/bin/python3
# -*- coding: utf-8 -*- """
PyQt5 Animation tutorial This program animates the size of a
widget with QPropertyAnimation. Author: Seshigure 401219180@qq.com
Last edited: 2018.03.02
""" from PyQt5.QtWidgets import QWidget, QApplication, QLabel, QPushButton
from PyQt5.QtGui import *
from PyQt5.QtCore import * 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 = QLabel("changeSize", self)
self.label.setAutoFillBackground(True) # 必写,不然调色板不能填充背景
self.palette = QPalette() # 创建一个调色板进行背景填充方便看label大小
self.palette.setColor(self.label.backgroundRole(), QColor(255, 50, 50, 50))
self.label.setPalette(self.palette)
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"geometry")
self.anim.setDuration(3000)
self.anim.setStartValue(QRect(150, 30, 100, 100)) # 大小100*100
self.anim.setEndValue(QRect(150, 30, 200, 200)) # 大小200*200
self.anim.start() if __name__ == "__main__":
app = QApplication([])
ex = Example()
ex.show()
app.exec_()
界面预览图如下:

备注:
1、这里使用了一个调色板对label背景进行填充,方便观察
self.label.setAutoFillBackground(True) # 必写,不然调色板不能填充背景
self.palette = QPalette()
self.palette.setColor(self.label.backgroundRole(), QColor(255, 50, 50, 50))
self.label.setPalette(self.palette)
2、其中使用 self.anim = QPropertyAnimation(self.label, b"geometry")创建了一个动画,()里面第一个是动画的对象,第二个是动画的属性(这里的属性为geometry)
3、通过设置初始值与结束值来改变label的大小
self.anim.setStartValue(QRect(150, 30, 100, 100)) # 大小100*100
self.anim.setEndValue(QRect(150, 30, 200, 200)) # 大小200*200
pyqt5 动画学习(一) 改变控件大小的更多相关文章
- C# 在运行中拖拽,改变控件大小位置类(转载)
原文地址:https://blog.csdn.net/zgke/article/details/3718989 copy的code /// <summary> /// 移动改变控件大小 / ...
- C++ MFC 改变控件大小和位置
用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight ...
- Android之动态改变控件大小
利用getLayoutParams()方法和setLayoutParams()方法.三步曲:1.首先利用getLayoutParams()方法,获取控件的LayoutParams.eg:LayoutP ...
- C#移动及改变控件大小
//代码比较简单,就不多解析了. #region 移动窗体保存数据 Point mouseOff;//鼠标移动位置变量 bool leftFlag; //标志是否为左键 bool largeFlag; ...
- java实现控件的移动及使用鼠标改变控件大小
package cn.com.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; ...
- C:\\MFC控件大小随窗体大小而改变
一.大小和位置都改变 1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小. 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(): 注意 ...
- BCGcontrolBar(五) 对话框大小改变控件自动适应
改变控件大小 首先在 构造函数中加入 EnableLayout(); 在OnInitDialog()函数中加入 CBCGPStaticLayout* pLayout = (CBCGPStaticLay ...
- android 动态改变控件位置和大小 .
动态改变控件位置的方法: setPadding()的方法更改布局位置. 如我要把Imageview下移200px: ImageView.setPadding( ImageVie ...
- MFC 改变控件的大小和位置
mfc 改变控件大小和位置用到的函数: ) void MoveWindow(int x, int y, int nWidth, int nHeight); ) void MoveWindow(LPCR ...
随机推荐
- js 关于日期,字符串转化
<html><head><title>简单获取日期的JS</title><meta http-equiv="Content-Type&q ...
- JavaWeb学习笔记七 事务
什么是事务?一件事情有n个组成单元 ,要么这n个组成单元同时成功,要么n个单元就同时失败.就是将n个组成单元放到一个事务中. mysql的事务 默认的事务:一条sql语句就是一个事务,默认就开启事务并 ...
- Django--入门篇:下载与项目生成
django作为python web应用开发最火的框架,没有之一,今天就给大家介绍django的一些入门知识. 我们选择pycharm工具,首先得要有django. 1.下载django --pip ...
- Beta冲刺第六天
一.昨天的困难 没有困难. 二.今天进度 1.林洋洋:更新申请ip为域名,去除druid数据源统计 2.黄腾达:协作详情中添加成员对话框优化 3.张合胜:修复侧栏菜单mini状态下不能显示问题 三.明 ...
- New UWP Community Toolkit - RangeSelector
概述 前面 New UWP Community Toolkit 文章中,我们对 V2.2.0 版本的重要更新做了简单回顾,其中简单介绍了 RangeSelector,本篇我们结合代码详细讲解一下 Ra ...
- 服务器数据恢复方法_存储raid硬盘离线数据恢复案例
[故障描述]某法院的一台HP-P4500的存储系统,底层是12块1TB的硬盘组的RAID.其中每6个1TB的盘一组,第一组的前面一部分组了一个RAID0+1,是存放HP-P4500嵌入式系统,接着组了 ...
- Project facet is Java version 1.7 is not spported
在移植eclipse项目时,如果遇到 "Project facet Java version 1.7 is not supported." 项目中的jdk1.7不支持.说明项目是其 ...
- CentOS搭建Git服务器及权限管理
声明:本教程,仅作为配置的记录,细节不展开,需要您有一点linux的命令基础,仅作为配置参考. 1. 系统环境 系统: Linux:CentOS 7.2 64位 由于CentOS已经内置了OpenSS ...
- Full-Stack-Fundation-Udacity------Lesson 1 Working with CRUD
因为手头在做一个项目,我负责后台,就顺带快进学习Udacity上一个水课(?):Full Stack Foundation.上课的好像是个印度小哥(?),按1.5倍速听讲话还是有点逗的.废话不多说,进 ...
- JavaScript-Jquery实现全选反选
html: <dl> <dt><input type="checkbox" id="checkAll" /><labe ...