Вы должны написать функцию, которая выполняет один кадр вашей анимации.Затем используйте after
для запуска этой команды по расписанию.
Вот очень простой пример:
import tkinter as tk
root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack(fill="both", expand=True)
class thing():
def __init__(self, canvas):
self.canvas = canvas
self.id = canvas.create_oval(10, 10, 20, 20, outline="red", fill="red")
def animate(self):
self.canvas.move(self.id, 10, 10)
self.canvas.after(100, self.animate)
t = thing(canvas)
t.animate()
root.mainloop()
Конечно, вам нужно добавить дополнительный код, чтобы иметь возможность остановитьанимация, или изменить ее, когда объект сталкивается с краем или уходит с экрана, и т. д. Однако это иллюстрирует общий принцип.В animate
вы можете добавить любую дополнительную логику, которую вы хотите.