【 Tkinter界面-练习03】实现动画

news2025/1/4 15:59:05

一、说明

 

        在本教程中,我们将学习Python Tkinter Animation。在这里,我们将了解如何在 python 中使用 Tkinter 创建动画,并将介绍与动画相关的不同示例。我们还将讨论这些主题

二、Python Tkinter 动画

        在本节中,我们将学习 Python Tkinter 动画。通过动画,我们的意思是在任何对象上创建瞬间的幻觉。在下面的代码中,我们采用了“x”和“y”的两个起始位置,并给了一个窗口一定的宽度高度,在其中,我们使用画布制作了一个球,并在屏幕空间内为球添加了一个时刻我们创造了什么。

        代码:

import tkinter
import time
 

Window_Width=800

Window_Height=600

Ball_Start_XPosition = 50

Ball_Start_YPosition = 50

Ball_Radius = 30

Ball_min_movement = 5

Refresh_Sec = 0.01
 

def create_animation_window():
  Window = tkinter.Tk()
  Window.title("Python Guides")

  Window.geometry(f'{Window_Width}x{Window_Height}')
  return Window
 

def create_animation_canvas(Window):
  canvas = tkinter.Canvas(Window)
  canvas.configure(bg="Blue")
  canvas.pack(fill="both", expand=True)
  return canvas
 

def animate_ball(Window, canvas,xinc,yinc):
  ball = canvas.create_oval(Ball_Start_XPosition-Ball_Radius,
            Ball_Start_YPosition-Ball_Radius,
            Ball_Start_XPosition+Ball_Radius,
            Ball_Start_YPosition+Ball_Radius,
            fill="Red", outline="Black", width=4)
  while True:
    canvas.move(ball,xinc,yinc)
    Window.update()
    time.sleep(Refresh_Sec)
    ball_pos = canvas.coords(ball)
    # unpack array to variables
    al,bl,ar,br = ball_pos
    if al < abs(xinc) or ar > Window_Width-abs(xinc):
      xinc = -xinc
    if bl < abs(yinc) or br > Window_Height-abs(yinc):
      yinc = -yinc
 

Animation_Window = create_animation_window()
Animation_canvas = create_animation_canvas(Animation_Window)
animate_ball(Animation_Window,Animation_canvas, Ball_min_movement, Ball_min_movement)

        以下是给定代码的一些主要亮点。

  • Canvas.create_oval()用于为球赋予椭圆形形状。
  • Canvas.move() = 球的运动
  • time.sleep()它将执行暂停给定的秒数。

        输出:

        运行上面的代码后,我们可以看到以下输出,其中球正在改变其位置。球上下移动并显示动画示例。

Python Tkinter 动画

输出

阅读:Python Tkinter 编辑器

三、Python Tkinter 加载动画

        在本节中,我们将学习 python Tkinter 加载动画。所谓加载,是指通过互联网处理任何页面或加载任何数据。

代码:

        在下面的代码中,我们制作了一个处理栏,该处理栏在单击运行按钮后运行,并显示我们正在页面中加载。

  • Progressbar()用于显示加载栏。
  • mode='确定'显示将起点移动到终点的指示器。
from tkinter import *
from tkinter.ttk import *

ws=Tk()
Progress_Bar=Progressbar(ws,orient=HORIZONTAL,length=250,mode='determinate')

def Slide():
    import time
    Progress_Bar['value']=20
    ws.update_idletasks()
    time.sleep(1)
    Progress_Bar['value']=50
    ws.update_idletasks()
    time.sleep(1)
    Progress_Bar['value']=80
    ws.update_idletasks()
    time.sleep(1)
    Progress_Bar['value']=100

Progress_Bar.pack()
Button(ws,text='Run',command=Slide).pack(pady=10)
mainloop()

        输出:

        运行以下代码后,我们得到以下输出,其中向我们展示了如何在 python Tkinter 中完成加载。在这里,我们可以看到当用户单击“运行”按钮时,页面上开始加载数据。

Python Tkinter 动画1

输出

阅读:Python Tkinter 表教程

四、Python tkinter 定时器动画

        在本节中,我们将学习 python Tkinter 计时器动画。通过计时器,我们的意思是为警报设置任何时间计数以记住我们的任务。了解计时器的最好例子是我们在日常工作中使用的闹钟。

        代码:

        在下面的代码中,我们导入了一个用于定义小时分钟和秒的时间库。这里,用户正在设置一些时间计数器,其作用类似于在时间到后发出警报。

import time
from tkinter import *
from tkinter import messagebox

ws = Tk()

ws.geometry("300x300")

ws.title("Python Guides")

Hour=StringVar()
Minute=StringVar()
Second=StringVar()

Hour.set("00")
Minute.set("00")
Second.set("00")

Hour_entry= Entry(ws, width=3, font=("Arial",18,""),
				textvariable=Hour)
Hour_entry.place(x=80,y=20)

Minute_entry= Entry(ws, width=3, font=("Arial",18,""),
				textvariable=Minute)
Minute_entry.place(x=130,y=20)

Second_entry= Entry(ws, width=3, font=("Arial",18,""),
				textvariable=Second)
Second_entry.place(x=180,y=20)


def OK():
	try:
		
		temp = int(Hour.get())*3600 + int(Minute.get())*60 + int(Second.get())
	except:
		print("Please Input The Correct Value")
	while temp >-1:
		
		Mins,Secs = divmod(temp,60)

	
		Hours=0
		if Mins >60:
			
	
			Hours, Mins = divmod(Mins, 60)
		
		
		Hour.set("{0:2d}".format(Hours))
		Minute.set("{0:2d}".format(Mins))
		Second.set("{0:2d}".format(Secs))

		
		ws.update()
		time.sleep(1)

		
		if (temp == 0):
			messagebox.showinfo("Time Countdown", "Time up ")
		
		
		temp -= 1


button = Button(ws, text=' countdown', bd='5',
			command= OK)
button.place(x = 100,y = 110)

ws.mainloop()

        输出:

        运行上面的代码后,我们可以看到用户设置了一些计时器几秒钟,并且它按照计时器的顺序工作。

Python Tkinter 倒计时

输出

阅读:如何在 Python Tkinter 中创建贪吃蛇游戏

五、Python tkinter matplotlib 动画

        Matplotlib是一个用于绘制图形的 Python 库。它是一个我们可以自由使用的开源库。它是用 Python 语言编写的。这是一个专门用于处理matplotlib函数的工具,名为“ MATLAB ”。在这里,Numpy 是它的数值数学扩展,用于表示其轴的图形值。

        代码:

  • plt.bar()用于表示使用X 轴Y 轴值绘制条形图。
  • ptl.xlabel()用于表示 x 轴。
  • plt.ylabel()用于表示 y 轴。
  • plt.title()用于为条形图提供标题。
from matplotlib import pyplot as plt
plt.bar([0.25,1.25,2.25,3.25,4.25],[50000,40000,70000,80000,200000],label="MAC",color='r',width=.4)
plt.bar([0.75,1.75,2.75,3.75,4.75],[80000,20000,20000,50000,60000],label="Dominos",color='b',width=.4)
plt.legend(loc='upper right')
plt.xlabel('Months')
plt.ylabel('Sales Amount')
plt.title('Information')
plt.show()

        输出:

        运行以下代码后,我们看到条形图已生成。以下是代表数据点的x 轴y 轴值的月份和销售额变量,条形代表一个月内的总销售额。在下面的 gif 中,我们可以看到当我们将鼠标悬停在条形上时, x 轴y 轴给出了一些值。

Python Tkinter Matplotlib 动画

输出

阅读:Python Tkinter 图像

六、Python tkinter 简单动画

        在下面的部分中,我们将学习 python Tkinter 的简单动画。在此,我们创建了一个按钮,通过单击该按钮可以更改背景颜色。

        代码:

        在下面的代码中,我们使用一个随机库,为我们的选项提供随机选择,并在顶部添加一个带有文本“click me”的按钮,该按钮可以随机更改背景颜色。

  • random.choice()返回一个随机选择颜色的列表。
  • ws.title用于为窗口指定标题。
  • Button()用于运行命令以在其中生成随机颜色。
from tkinter import *
import random

def gen_color():
    ws.configure(background=random.choice(["black", "red" , "green" , "blue"]))
    
ws =Tk()
ws.title("Python Guides")
ws.geometry('500x500')



button=Button(ws,text='Click Me',command = gen_color).pack()
ws.mainloop()

        输出:

        运行上面的代码后,我们可以在 python Tkinter 的帮助下运行一个简单的动画。

简单的动画

简单的动画

阅读:Python Tkinter 颜色

七、Python tkinter 按钮动画

        在本节中,我们将学习 Python Tkinter 动画按钮。

        我们在这里使用按钮动画作为一项功能,我们可以在任何游戏应用程序或任何类似应用程序中使用该功能来打开或关闭该功能。这里的按钮就像我们日常生活中使用的普通开关一样工作,可以打开房子的灯。

代码:

from tkinter import *
ws = Tk()
ws.title("Python Guides")

def convert():
    if(a1['state']==NORMAL):
        a1["state"] = DISABLED
        a2["text"]="enable"
    elif (a1['state']==DISABLED):
        a1["state"]=NORMAL
        a2["text"]="disable"

#--Buttons
a1=Button(ws, text="button")
a1.config(height = 8, width = 9)
a1.grid(row=0, column=0)    
a2 = Button(text="disable", command=convert)
a2.grid(row=0,column=1)
ws.mainloop()

        在上面的代码中,首先,我们创建了一个按钮对象“ a1 ”,然后,我们使用IF语句来检查按钮的状态。最后,我们使用状态来更改按钮的行为以获得所需的结果。

输出:

        运行以下代码后,我们得到以下输出,其中我们看到当我们单击它们时按钮将被禁用。当我们再次单击它们时,该按钮将被启用。

Python Tkinter 按钮动画

 

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

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

服务器数据恢复- Ext4文件系统分区挂载报错的数据恢复案例

Ext4文件系统相关概念&#xff1a; 块组&#xff1a;Ext4文件系统的空间被划分为若干个块组&#xff0c;每个块组内的结构大致相同。 块组描述符表&#xff1a;每个块组都对应一个块组描述符&#xff0c;这些块组描述符统一放在文件系统的前部&#xff0c;称为块组描述符表。每…

【python爬虫】15.Scrapy框架实战(热门职位爬取)

文章目录 前言明确目标分析过程企业排行榜的公司信息公司详情页面的招聘信息 代码实现创建项目定义item 创建和编写爬虫文件存储文件修改设置 代码实操总结 前言 上一关&#xff0c;我们学习了Scrapy框架&#xff0c;知道了Scrapy爬虫公司的结构和工作原理。 在Scrapy爬虫公司…

基于IPV6带外BMC在中兴R5500G4服务器上安装ESXi7.0U3n

本文讲解通过IPV6方式从带外BMC在中兴R5500G4服务器上安装VMWare ESXi7.0U3n的过程。 一、安装环境 服务器&#xff1a; 中兴R5500G4服务器(2*16C/384GB MEM/2*480GB SSD/24*8TB SATA/12*960GB SSD/8*10Ge) ISO&#xff1a;VMware-VMvisor-Installer-7.0U3n-21930508.x86_64…

zabbix配置钉钉告警、和故障自愈

钉钉告警python脚本 cat python20 #!/usr/bin/python3 #coding:utf-8 import requests,json,sys,os,datetime # 机器人的Webhook地址 webhook"钉钉" usersys.argv[1] textsys.argv[3] data{"msgtype": "text","text": {"conten…

UniTask保姆级教程

目录 一、UniTask的简介和安装 https://github.com/Cysharp/UniTask.gitpathsrc/UniTask/Assets/Plugins/UniTask 空载性能测试 二、基础用法详解 三、基础用法扩展 四、进阶 五、VContainer简介 六、VContainer基础实例 方便快速查找 一、UniTask的简介和安装 项目地…

如何使用蚂蚁集团自动化混沌工程 ChaosMeta 做 OceanBase 攻防演练?

当前&#xff0c;业界主流的混沌工程项目基本只关注如何制造故障的问题&#xff0c;而经常做演练相关工作的工程师应该明白&#xff0c;每次演练时还会遇到以下痛点&#xff1a; 检测当前环境是否符合演练预设条件&#xff08;演练准入&#xff09;&#xff1b; 业务流量是否满…

第四章网关

文章目录 Gateway服务网关为什么需要网关gateway快速入门断言工厂过滤器工厂路由过滤器的种类默认过滤器全局过滤器自定义全局过滤器 过滤器执行顺序 跨域问题什么是跨域问题 Gateway服务网关 Spring Cloud Gateway 是 Spring Cloud 的一个全新项目&#xff0c;该项目是基于 S…

基于3D数字孪生系统开展水环境治理与修复的功能特点

“小水滴”折射“大民生”&#xff0c;城市供水是极为重要的民生工程、民心工程。上海市委、市政府始终把提高城市供水安全韧性摆在突出位置&#xff0c;着力打造更加完善、更高质量的城市供水网络体系&#xff0c;夯实筑牢城市供水生命线&#xff0c;确保城市水安全。经过多年…

TFTP服务器,NFS服务器

一&#xff0c;安装tftp服务器 1&#xff0c;什么是tftp服务器&#xff1f; tftp服务器是通过网络&#xff0c;将ubuntu程序下载到开发板中 2&#xff0c;安装步骤 1&#xff0c;保证连接外网成功 2&#xff0c;安装tftp服务器 sudo apt-get install tftp-hpa tftpd-hpat…

算法笔记 近似最近邻查找(Approximate Nearest Neighbor Search,ANN)

1 介绍 精准最近邻搜索中数据维度一般较低&#xff0c;所以会采用穷举搜索&#xff0c;即在数据库中依次计算其中样本与所查询数据之间的距离&#xff0c;抽取出所计算出来的距离最小的样本即为所要查找的最近邻。 当数据量非常大的时候&#xff0c;搜索效率急剧下降。——>…

公共实训中心物联网技术应用实训室建设方案

一、概述 1.1专业背景 物联网&#xff08;Internet of Things&#xff09;被称为继计算机、互联网之后世界信息产业第三次浪潮&#xff0c;它并非一个全新的技术领域&#xff0c;而是现代信息技术发展到一定阶段后出现的一种聚合性应用与技术提升&#xff0c;是随着传感网、通…

百度低质量站点怎么办?解决百度低质量站点的方法和工具

百度低质量站点怎么恢复&#xff1f;这是许多网站主和运营人员在SEO优化过程中经常面临的一个问题。百度作为中国最大的搜索引擎&#xff0c;对于网站收录和排名具有至关重要的影响。然而&#xff0c;由于各种原因&#xff0c;有些网站可能面临被百度降权或收录减少的情况。那么…

Netty服务端启动的整体流程-基于源码4.1.96Final分析

Netty采用的是主从Reactor多线程的模型&#xff0c;参考Scalable IO in Java&#xff0c;但netty的subReactor为一个组 一、从FileServer服务器示例入手 public final class FileServer {static final boolean SSL System.getProperty("ssl") ! null;// Use the …

RHCA之路---EX280(4)

RHCA之路—EX280(4) 1. 题目 Use the S2I functionality of your OpenShift instance to build an application in the rome project Use the Git repository at http://services.lab.example.com/php-helloworld for the application source Use the Docker image labeled re…

栈(Stack)的详解

目录 1.栈的概念 2.栈的模拟实现 1.栈的方法 2.模拟栈用&#xff08;整型&#xff09;数组的形式呈现 2.1栈的创建 2.2压栈 2.3栈是否为空 2.4出栈 2.5获取栈中有效元素个数 2.6获取栈顶元素 2.7完整代码实现 1.栈的概念 从上图中可以看到&#xff0c; Stack 继承了…

vite+vue3+element-plus

vitevue3element-plus 1.开始 npm create vitelatest app -- --template vuenpm installlnpm run dev2.引入element-ui npm install element-plus修改main.js import ElementPlus from element-plus import element-plus/dist/index.css createApp(App).use(ElementPlus).m…

剑指 Offer 65. 不用加减乘除做加法(简单)

题目&#xff1a; class Solution { public:int add(int a, int b) {while(b){ //总体思路&#xff1a;每一次加法器结果a上一次产生的进位数*进制数本位数&#xff0c;进制数为0的时候直接返回本位数a即可int carry a&b; //计算进位a a^b; //计算…

NC后端扩展开发

前言 在日常的工作中&#xff0c;会遇到各种各样的需要进行扩展开发的需求&#xff0c;可以使用系统预留的扩展开发机制来实现&#xff0c;避免修改源码。因NC产品已迭代至BIP版本&#xff0c;所以前端扩展方式就再进行不赘述了&#xff0c;本文主要介绍后端扩展开发方式&…

docker使用(二)提交到dockerhub springboot制作镜像

docker使用&#xff08;二&#xff09; dockerhub创建账号创建存储库成功&#xff01;开始推送获取image名 提交成功SpringBoot项目制作Dockerfile镜像部署打jar包 dockerhub创建账号 &#xff08;自认为可以理解为github一类的东西&#xff09; 单击创建存储库按钮。 设定存…

DROID-SLAM复现(服务器端复现,yaml创建env,)

环境配置 代码地址&#xff1a;https://github.com/princeton-vl/DROID-SLAM git 代码 官方方法&#xff0c;直接拉取&#xff1a; git clone --recursive https://github.com/princeton-vl/DROID-SLAM.git如果从github拉取很慢&#xff0c;可以直接从gitee上拉取同步的代码…