3.4认识动画
在我们PYTHON中tkinter模块,做动画不是它的特长,但基本的处理还是可以做的。例如,我们可以创建一个填了色的圆,用下面的代码让它在屏幕上横向移动。
下面是我们要做的事情。
1、在指定位置,画一绿色的圆。
2、认识圆的id。
3、使圆沿着屏幕左侧每间隔0.07秒,移动一下圆形。
实现代码如下:
#练习基础动画
import time
from tkinter import*
tk=Tk()
canvas=Canvas(tk,width=900,height=900)
canvas.pack()
canvas.create_oval(100, 100, 200, 200, fill = “green” )
for x in range(0,500):
canvas.move(1,0,5)
tk.update()
time.sleep(0.07)
当你运行这段代码,圆形会从屏幕上侧纵向移动到屏幕下侧。如图3-12
图3-12
它是如何工作的呢?我们着重看一下下面这段代码
id=canvas.create_oval(100, 100, 200, 200, fill = “green” )
print(id)
当你输入这一行时,屏幕上会打印出一个数字,它是这个圆形的id。canvas.move(1,0,5)
中的1,就是指向这个id。
Canvas.move函数会把任意画好的对象移动到把x及y坐标增加给定值的位置。例如canvas.move(1,0,5)会把id为1的对象横向移动0个像素,纵向5个像素。要想把它再移回来,我们可以用函数canvas.move(1,0,-5)。
我们来修改代码,体会一下不同方向的动画。
向上运动。见图3-13
import time
from tkinter import*
tk=Tk()
canvas=Canvas(tk,width=900,height=900)
canvas.pack()
canvas.create_oval(400, 400, 500, 500, fill = “green” )
for x in range(0,500):
canvas.move(1,0,-5)
tk.update()
time.sleep(0.07)
图3-13
向左上方运动。见图3-14
import time
from tkinter import*
tk=Tk()
canvas=Canvas(tk,width=900,height=900)
canvas.pack()
canvas.create_oval(600, 600, 700, 700, fill = “green” )
for x in range(0,500):
canvas.move(1,-5,-5)
tk.update()
time.sleep(0.07)
图3-14