入坑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 动画学习(一) 改变控件大小的更多相关文章

  1. C# 在运行中拖拽,改变控件大小位置类(转载)

    原文地址:https://blog.csdn.net/zgke/article/details/3718989 copy的code /// <summary> /// 移动改变控件大小 / ...

  2. C++ MFC 改变控件大小和位置

    用CWnd类的函数MoveWindow()或SetWindowPos()可以改变控件的大小和位置. void MoveWindow(int x,int y,int nWidth,int nHeight ...

  3. Android之动态改变控件大小

    利用getLayoutParams()方法和setLayoutParams()方法.三步曲:1.首先利用getLayoutParams()方法,获取控件的LayoutParams.eg:LayoutP ...

  4. C#移动及改变控件大小

    //代码比较简单,就不多解析了. #region 移动窗体保存数据 Point mouseOff;//鼠标移动位置变量 bool leftFlag; //标志是否为左键 bool largeFlag; ...

  5. java实现控件的移动及使用鼠标改变控件大小

    package cn.com.test; import java.awt.BorderLayout; import java.awt.Color; import java.awt.Component; ...

  6. C:\\MFC控件大小随窗体大小而改变

    一.大小和位置都改变 1.首先为窗体类添加CRect m_rect,该成员变量用来记录窗体的当前大小. 2.在类向导里面(Ctrl+W),为窗体添加消息WM_SIZE的响应函数OnSize(): 注意 ...

  7. BCGcontrolBar(五) 对话框大小改变控件自动适应

    改变控件大小 首先在 构造函数中加入 EnableLayout(); 在OnInitDialog()函数中加入 CBCGPStaticLayout* pLayout = (CBCGPStaticLay ...

  8. android 动态改变控件位置和大小 .

    动态改变控件位置的方法: setPadding()的方法更改布局位置. 如我要把Imageview下移200px:             ImageView.setPadding( ImageVie ...

  9. MFC 改变控件的大小和位置

    mfc 改变控件大小和位置用到的函数: ) void MoveWindow(int x, int y, int nWidth, int nHeight); ) void MoveWindow(LPCR ...

随机推荐

  1. Python中的PYTHONPATH环境变量

    PYTHONPATH是Python中一个重要的环境变量,用于在导入模块的时候搜索路径.可以通过如下方式访问: >>> import sys >>> sys.path ...

  2. 深入理解C++ new/delete, new []/delete[]动态内存管理

    在C语言中,我们写程序时,总是会有动态开辟内存的需求,每到这个时候我们就会想到用malloc/free 去从堆里面动态申请出来一段内存给我们用.但对这一块申请出来的内存,往往还需要我们对它进行稍许的“ ...

  3. JavaScript(第一天)【<script>标签浅析】

    一.创建一张HTML页面 初学者创建一张html页面建议借助工具,例如Dreamweaver可视化编辑器.   二.<Script>标签解析 <script>xxx</s ...

  4. alpha-咸鱼冲刺day8

    一,合照 emmmmm.自然还是没有的. 二,项目燃尽图 三,项目进展 正在进行页面整合.然后还有注册跟登陆的功能完善-- 四,问题困难 数据流程大概是搞定了.不过语法不是很熟悉,然后还有各种判定. ...

  5. python day1 基本语法作业

    一.过7 start =1 while start<=10: if start !=7: print(start) start +=1 二.100以内的和 sum = 0 start = 1 w ...

  6. scrapy crawl xmlfeed spider

    from scrapy.spiders import XMLFeedSpider from myxml.items import MyxmlItem class XmlspiderSpider(XML ...

  7. Django-rest-framework源码分析----权限

    添加权限 (1)API/utils文件夹下新建premission.py文件,代码如下: message是当没有权限时,提示的信息 # utils/permission.py class SVIPPr ...

  8. django的FBV和CBV

    title: python djano CBV FBV tags: python, djano, CBV, FBV grammar_cjkRuby: true --- python django的fu ...

  9. Eclipse常用快捷键总结

    Eclipse常用快捷键总结 CTRL+C(复制).CTRL+X(剪切).CTRL+Z(撤销).CTRL+F(查找).CTRL+H(搜索文件或字符串).CTRL+Y(重做).CTRL+/(双斜杠注释) ...

  10. istio入门(05)istio的架构概念2