【 Tkinter界面-练习03】实现动画_tkinter 动画效果-程序员宅基地

技术标签: python  python指南和应用  开发语言  

一、说明

 

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

二、Python Tkinter 动画

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

2.1 在sleep函数下实现

        代码:

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 动画

输出

2.2 在after函数下实现

        在Tkinter Canvas中移动球,在窗口中绘制椭圆形或球的Canvas部件。

  • 要移动球,我们必须定义一个名为 move_ball() 的函数。在函数中,必须定义球的位置,当球撞击画布的墙壁(左、右、上和下)时位置会不断更新。

  • 要更新球的位置,我们必须使用 canvas.after(duration, function()) ,它会反映球在一定时间间隔后改变其位置。

  • 最后,执行代码来运行应用程序。

        示例代码

# 导入所需的库
from tkinter import *

# 创建一个tkinter窗口实例
win=Tk()

# 设置窗口大小
win.geometry("700x350")

# 设置窗口大小为固定
win.resizable(False,False)

# 创建一个画布部件
canvas=Canvas(win, width=700, height=350)
canvas.pack()

# 在画布部件中创建一个椭圆形或球
ball=canvas.create_oval(10,10,50,50, fill="green3")

# 移动球
xspeed=yspeed=3

def move_ball():
   global xspeed, yspeed

   canvas.move(ball, xspeed, yspeed)
   (leftpos, toppos, rightpos, bottompos)=canvas.coords(ball)
   if leftpos <=0 or rightpos>=700:
      xspeed=-xspeed

   if toppos <=0 or bottompos >=350:
      yspeed=-yspeed

   canvas.after(30,move_ball)

canvas.after(30, move_ball)

win.mainloop()

        输出

        运行上述代码将显示一个应用程序窗口,在画布中有一个可移动的球。

阅读: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 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 按钮动画

 

版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
本文链接:https://blog.csdn.net/gongdiwudu/article/details/132665414

智能推荐

c# 调用c++ lib静态库_c#调用lib-程序员宅基地

文章浏览阅读2w次,点赞7次,收藏51次。四个步骤1.创建C++ Win32项目动态库dll 2.在Win32项目动态库中添加 外部依赖项 lib头文件和lib库3.导出C接口4.c#调用c++动态库开始你的表演...①创建一个空白的解决方案,在解决方案中添加 Visual C++ , Win32 项目空白解决方案的创建:添加Visual C++ , Win32 项目这......_c#调用lib

deepin/ubuntu安装苹方字体-程序员宅基地

文章浏览阅读4.6k次。苹方字体是苹果系统上的黑体,挺好看的。注重颜值的网站都会使用,例如知乎:font-family: -apple-system, BlinkMacSystemFont, Helvetica Neue, PingFang SC, Microsoft YaHei, Source Han Sans SC, Noto Sans CJK SC, W..._ubuntu pingfang

html表单常见操作汇总_html表单的处理程序有那些-程序员宅基地

文章浏览阅读159次。表单表单概述表单标签表单域按钮控件demo表单标签表单标签基本语法结构<form action="处理数据程序的url地址“ method=”get|post“ name="表单名称”></form><!--action,当提交表单时,向何处发送表单中的数据,地址可以是相对地址也可以是绝对地址--><!--method将表单中的数据传送给服务器处理,get方式直接显示在url地址中,数据可以被缓存,且长度有限制;而post方式数据隐藏传输,_html表单的处理程序有那些

PHP设置谷歌验证器(Google Authenticator)实现操作二步验证_php otp 验证器-程序员宅基地

文章浏览阅读1.2k次。使用说明:开启Google的登陆二步验证(即Google Authenticator服务)后用户登陆时需要输入额外由手机客户端生成的一次性密码。实现Google Authenticator功能需要服务器端和客户端的支持。服务器端负责密钥的生成、验证一次性密码是否正确。客户端记录密钥后生成一次性密码。下载谷歌验证类库文件放到项目合适位置(我这边放在项目Vender下面)https://github.com/PHPGangsta/GoogleAuthenticatorPHP代码示例://引入谷_php otp 验证器

【Python】matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距-程序员宅基地

文章浏览阅读4.3k次,点赞5次,收藏11次。matplotlib.plot画图横坐标混乱及间隔处理_matplotlib更改横轴间距

docker — 容器存储_docker 保存容器-程序员宅基地

文章浏览阅读2.2k次。①Storage driver 处理各镜像层及容器层的处理细节,实现了多层数据的堆叠,为用户 提供了多层数据合并后的统一视图②所有 Storage driver 都使用可堆叠图像层和写时复制(CoW)策略③docker info 命令可查看当系统上的 storage driver主要用于测试目的,不建议用于生成环境。_docker 保存容器

随便推点

网络拓扑结构_网络拓扑csdn-程序员宅基地

文章浏览阅读834次,点赞27次,收藏13次。网络拓扑结构是指计算机网络中各组件(如计算机、服务器、打印机、路由器、交换机等设备)及其连接线路在物理布局或逻辑构型上的排列形式。这种布局不仅描述了设备间的实际物理连接方式,也决定了数据在网络中流动的路径和方式。不同的网络拓扑结构影响着网络的性能、可靠性、可扩展性及管理维护的难易程度。_网络拓扑csdn

JS重写Date函数,兼容IOS系统_date.prototype 将所有 ios-程序员宅基地

文章浏览阅读1.8k次,点赞5次,收藏8次。IOS系统Date的坑要创建一个指定时间的new Date对象时,通常的做法是:new Date("2020-09-21 11:11:00")这行代码在 PC 端和安卓端都是正常的,而在 iOS 端则会提示 Invalid Date 无效日期。在IOS年月日中间的横岗许换成斜杠,也就是new Date("2020/09/21 11:11:00")通常为了兼容IOS的这个坑,需要做一些额外的特殊处理,笔者在开发的时候经常会忘了兼容IOS系统。所以就想试着重写Date函数,一劳永逸,避免每次ne_date.prototype 将所有 ios

如何将EXCEL表导入plsql数据库中-程序员宅基地

文章浏览阅读5.3k次。方法一:用PLSQL Developer工具。 1 在PLSQL Developer的sql window里输入select * from test for update; 2 按F8执行 3 打开锁, 再按一下加号. 鼠标点到第一列的列头,使全列成选中状态,然后粘贴,最后commit提交即可。(前提..._excel导入pl/sql

Git常用命令速查手册-程序员宅基地

文章浏览阅读83次。Git常用命令速查手册1、初始化仓库git init2、将文件添加到仓库git add 文件名 # 将工作区的某个文件添加到暂存区 git add -u # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,不处理untracked的文件git add -A # 添加所有被tracked文件中被修改或删除的文件信息到暂存区,包括untracked的文件...

分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120-程序员宅基地

文章浏览阅读202次。分享119个ASP.NET源码总有一个是你想要的_千博二手车源码v2023 build 1120

【C++缺省函数】 空类默认产生的6个类成员函数_空类默认产生哪些类成员函数-程序员宅基地

文章浏览阅读1.8k次。版权声明:转载请注明出处 http://blog.csdn.net/irean_lau。目录(?)[+]1、缺省构造函数。2、缺省拷贝构造函数。3、 缺省析构函数。4、缺省赋值运算符。5、缺省取址运算符。6、 缺省取址运算符 const。[cpp] view plain copy_空类默认产生哪些类成员函数

推荐文章

热门文章

相关标签