#--------------------------------------------------------------------- # Esempio metodo after per avviare ciclicamente # una funzione realizzando un'animazione #--------------------------------------------------------------------- try: import Tkinter as tk # Py2 except ImportError: import tkinter as tk # Py3 import math XS, YS = 150, 100 # coordinate X e Y del sole SR, PR = 13, 3 # raggi del sole e del pianeta G = 500.0 # forza di attrazione xp, yp = 150.0, 30.0 # coordinate iniziali del pianeta vx, vy = 2.5, -0.8 # velocita' iniziali del pianeta #--------------------------------------------------------------------- def elabora(): global xp, yp, vx, vy form1.after(40, elabora) dx = XS - xp dy = YS - yp d = math.hypot(dx, dy) f = G / (d*d) vx += f * (dx / d) vy += f * (dy / d) xp += vx yp += vy canv1.coords(pianeta, xp-PR, yp-PR, xp+PR, yp+PR) #--------------------------------------------------------------------- form1 = tk.Tk() form1.resizable(False, False) canv1 = tk.Canvas( form1, width=300, height=200, bg="black", highlightthickness=0) canv1.create_oval(XS-SR, YS-SR, XS+SR, YS+SR, fill="yellow") pianeta = canv1.create_oval(xp-PR, yp-PR, xp+PR, yp+PR, fill="green") canv1.pack() elabora() form1.mainloop()