我正在尝试动画一个随时间移动的圆圈,但我不知道如何在.after()
上使用Canvas
在圆圈每次更改位置之前添加延迟。有谁知道如何做到这一点?
感谢。
我的代码(我已将.sleep()
放在我希望延迟的地方):
from tkinter import *
import time
root = Tk()
c = Canvas(root, width = 500, height = 500)
c.pack()
oval = c.create_oval(0, 0, 0, 0)
for x in range(2, 50, 5):
time.sleep(0.1)
c.delete(oval)
oval = c.create_oval(x+50, x+50, x+50, x+50)
答案 0 :(得分:3)
以下是使用从代码派生的.after
的简单示例。如您所见,.after
方法需要提供一个在指定的延迟后调用的函数,因此您需要将更改包装在函数中。
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width = 500, height = 500)
canvas.pack()
radius = 10
bbox = (-radius, -radius, radius, radius)
oval = canvas.create_oval(*bbox)
def move_oval():
canvas.move(oval, 1, 1)
canvas.after(20, move_oval)
# Start moving!
move_oval()
root.mainloop()
如果您想查看更复杂的示例,请查看tk_orbit.py。