pyqt动画效果放大与缩小

pyqt动画效果放大与缩小

  • QPropertyAnimation介绍
  • 放大与缩小效果
  • 代码

QPropertyAnimation介绍

QPropertyAnimation 是 PyQt中的一个类,它用于对 Qt 对象的属性进行动画处理。通过使用 QPropertyAnimation,你可以平滑地改变一个对象的属性值,例如窗口的位置、大小、颜色等。

放大与缩小效果

放大效果:
在这里插入图片描述
缩小效果:
在这里插入图片描述

代码

from PyQt5.QtWidgets import QWidget, QApplication, QFrame, QPushButton  
from PyQt5.QtCore import QRect, QPropertyAnimation  
from PyQt5.QtGui import QColor  
  
  
class Example(QWidget):  
    """  
    一个示例类,继承自QWidget,用于展示一个简单的动画效果。  
    """  
  
    def __init__(self):  
        """  
        构造函数,初始化QWidget并调用initUI方法。  
        """  
        super().__init__()  # 调用父类QWidget的构造函数  
  
        self.initUI()  # 初始化UI  
  
    def initUI(self):  
        """  
        初始化UI,包括按钮、框架以及设置窗口的基本属性。  
        """  
        self.button = QPushButton("Start", self)  # 创建一个QPushButton对象,文本为"Start",父对象为self  
        self.button.clicked.connect(self.doAnim)  # 将按钮的clicked信号连接到doAnim槽函数  
        self.button.move(30, 30)  # 移动按钮到指定位置  
  
        self.frame = QFrame(self)  # 创建一个QFrame对象,父对象为self  
        self.frame.setFrameStyle(QFrame.Panel | QFrame.Raised)  # 设置框架的样式为面板且凸起  
        self.frame.setStyleSheet("QFrame { background-color: blue; }")  # 设置框架的背景色为蓝色  
        self.frame.setGeometry(QRect(150, 30, 100, 100))  # 设置框架的初始位置和大小  
  
        self.setGeometry(300, 300, 380, 300)  # 设置窗口的初始位置和大小  
        self.setWindowTitle('Animation')  # 设置窗口的标题为"Animation"  
        self.show()  # 显示窗口  
  
    def doAnim(self):  
        """  
        定义动画效果,包括创建动画对象、设置动画参数以及启动动画。  
        """  
        self.anim = QPropertyAnimation(self.frame, b"geometry")  # 创建一个QPropertyAnimation对象,用于对self.frame的geometry属性进行动画处理  
        self.anim.setDuration(1000)  # 设置动画的持续时间为1000毫秒(1秒)  
        self.anim.setStartValue(QRect(150, 30, 100, 100))  # 设置动画开始时的值为初始位置和大小  
        # 注释了放大的代码,改为缩小  
        # self.anim.setEndValue(QRect(150, 30, 200, 200))  # 如果要放大,可以取消注释这行代码,注释下面的缩小代码  
        self.anim.setEndValue(QRect(150, 30, 50, 50))  # 设置动画结束时的值为缩小后的位置和大小  
        self.anim.start()  # 启动动画  
  
  
if __name__ == "__main__":  
    app = QApplication([])  # 创建一个QApplication对象,作为整个应用程序的入口  
    ex = Example()  # 创建一个Example对象,即主窗口  
    ex.show()  # 显示主窗口  
    app.exec_()  # 进入应用程序的主事件循环,等待用户操作或程序结束

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

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

相关文章

【新手入门】Github与Git使用教程

Github与Git 一、Github基础教程 1.1 基本操作 点击代码文件可以直接查看文件的内容,支持在线修改文件,只需要点击(文件内容)右上角的编辑按钮即可进行编辑。 README.md一般介绍项目的功能,用法,注意事项;有时还有…

二、安装、使用Grafana

目录 一、安装Grafana 二、使用grafana 一、安装Grafana 官网:https://grafana.com/ 账号:admin 密码:xxxxxx [rootrabbitmq_2 prometheus]# [rootrabbitmq_2 prometheus]# wget https://dl.grafana.com/enterprise/release/grafana-enter…

kubernetes集群开启ipvs模式

1) 需要在所有节点机器安装ipvsadm: apt install ipvsadm 2) 加载ipvs模块 modprobe ip_vs modprobe ip_rr modprobe ip_wrr modprobe ip_sh修改k8s集群内的kube-proxy cm kubectl edit cm kube-proxy -n kube-system修改模式为ipvs: 如图 …

重大升级 | OpenSCA SaaS全面接入供应链安全情报!

结合社区用户反馈及研发小伙伴的积极探索, OpenSCA 项目组再次发力,SaaS版本重大升级啦! 用户的需求是OpenSCA前进的动力,欢迎更多感兴趣的朋友们积极试用和反馈~ 更 新 内 容 1.全面接入云脉XSBOM供应链安全情报 2.强大的资产…

太速科技-基于VU3P的双路100G光纤加速计算卡

基于VU3P的双路100G光纤加速计算卡 一、板卡概述 基于Xilinx UltraScale16 nm VU3P芯片方案基础上研发的一款双口100 G FPGA光纤以太网PCI-Express v3.0 x16智能加速计算卡,该智能卡拥有高吞吐量、低延时的网络处理能力以及辅助CPU进行网络功能卸载的能力…

【董晓算法】竞赛常用知识之字符串2

前言: 本系列是学习了董晓老师所讲的知识点做的笔记 董晓算法的个人空间-董晓算法个人主页-哔哩哔哩视频 (bilibili.com) 动态规划系列(还没学完) 【董晓算法】动态规划之线性DP问题-CSDN博客 【董晓算法】动态规划之背包DP问题&#xff…

通往糊涂之路 The road to serfdom

最近被推送了一本书,哈耶克的............ 试一试,看看能不能看懂,也许是通往糊涂之路。

AI游戏外挂为何违法?

尊敬的读者们,大家好!今天我想和大家探讨一个备受争议的话题——AI游戏外挂的合法性。近年来,随着人工智能技术的飞速发展,AI外挂逐渐成为游戏领域的一大毒瘤。那么,为什么AI游戏外挂会被视为违法行为呢?本…

vue3延迟加载(异步组件​)defineAsyncComponent

最简单用法 Index.vue: <script setup> import { onMounted, defineAsyncComponent } from vue import ./index.cssconst Child defineAsyncComponent(() > import(./Child.vue))onMounted(() > {}) </script><template><div class"m-home-w…

前端XHR请求数据

axios封装了XHR(XMLHttpRequest) 效果 项目结构 Jakarta EE9&#xff0c;Web项目。 无额外的maven依赖 1、Web页面 index.html <!DOCTYPE html> <html lang"en"> <head><meta charset"UTF-8"><title>Title</title&…

网络编程套接字详解

目录 1. 预备介绍 2.网络字节序 3.udp网络程序 4.地址转换函数 5.udp网络编程 1.预备介绍 1.1源IP地址和目标IP地址 举个例子: 从北京出发到上海旅游, 那么源IP地址就是北京, 目标IP地址就是上海. 1.2 端口号 作用: 标识一个进程, 告诉OS这个数据交给那个进程来处理; (1)…

炫酷渐变官网源码

炫酷渐变官网源码 效果图部分代码领取源码下期更新预报 效果图 部分代码 <!DOCTYPE html> <html lang"en"><head><meta charset"utf-8"><meta http-equiv"X-UA-Compatible" content"IEedge"><title…

Vue3 动态引入图片: require is not defined报错

问题&#xff1a;在 Vue3 项目中&#xff0c;使用 require 引入图片&#xff0c;报错 require is not defined 原因&#xff1a; Vue3 使用的是 vite&#xff0c;而 require 是 Webpack 的方法。 官网说明&#xff1a; 解决代码&#xff1a; <template><div v-fo…

C++ string类的模拟实现

目录 0.前言 1.string类的常用接口说明&#xff08;续&#xff09; c_str find rfind find_first_of find_last_of find_first_not_of find_last_not_of substr compare 2.常见拷贝辨析 2.1浅拷贝 2.2深拷贝 2.3写时拷贝 3.string的模拟实现 3.1构造与析构函数…

【Ubuntu永久授权串口设备读取权限“/dev/ttyUSB0”】

Ubuntu永久授权串口设备读取权限 1 问题描述2 解决方案2.1 查看ttyUSB0权限&#xff0c;拥有者是root&#xff0c;所属用户组为dialout2.2 查看dialout用户组成员&#xff0c;如图所示&#xff0c;普通用户y不在dialout组中2.3 将普通用户y加入dialout组中2.4 再次查看dialout用…

【C++】详解STL的适配器容器之一:优先级队列 priority_queue

目录 堆算法 概述 向下调整建堆 向上调整建堆 建堆算法 仿函数 概述 使用介绍 emtpy size top push pop 模拟实现 仿函数 框架 向下调整算法 向上调整算法 pop push empty top 要理解优先级队列&#xff0c;需要有如下知识 STL容器之一的vector&#xf…

品鉴中的盲品挑战:如何凭借感官判断红酒的类型与品质

盲品挑战是一种品鉴方式&#xff0c;通过蒙住品鉴者的眼睛&#xff0c;仅凭感官来判断红酒的类型和品质。这种方式考验品鉴者的感官敏锐度和经验&#xff0c;也是提升品鉴能力的一种有趣方式。那么&#xff0c;如何在盲品挑战中凭借感官判断雷盛红酒的类型与品质呢&#xff1f;…

腐烂的橘子

代码实现&#xff1a; int orangesRotting(int **grid, int gridRowSize, int *gridColSizes) {int good 0, bad 0, t 0;for (int i 0; i < gridRowSize; i) {for (int j 0; j < gridColSizes[0]; j) {if (grid[i][j] 1) { // 记录好橘子数good;} else if (grid[i…

04、 .java程序用 editplus 工具打开的过程及在 editplus 工具中配置 java/javac 命令的过程

EditPlus 工具的使用&#xff1a; 1、安装 editplus 工具的过程&#xff1a;其一、安装包地址&#xff1a;其二、安装步骤&#xff1a; 2、使用 editplus 工具打开 .java 程序的过程&#xff1a;其一、修改默认打开 .java 的工具&#xff1a;其二、效果展示&#xff1a; 3、在 …

外卖系统微信小程序支付

微信小程序支付时序图 其中第9.步骤就是微信小程序前端调用wx.requestPayment