Alors j'ai un exercice à réalisé dans un canvas :
"Écrivez un programme qui simule le mouvement de 2 planètes tournant autour du soleil sur des orbites circulaires différentes (ou deux électrons tournant autour d'un noyau d'atome...)."
Bon, alors voila une première approche du code en 2D:
from tkinter import *
import math
def move():
"déplacement de la balle"
global x1, y1, t, r
delta = 0.2
x1 = x + r * math.cos(t)
y1 = y + r * math.sin(t)
t += delta
if t > 2*math.pi:
t = 0
can.coords(rond2,x1,y1,x1+30,y1+30)
if flag >0:
fen1.after(10,move)
def move0():
global x2, y2, T, R
delta = 0.1
x2 = x + R * math.cos(T)
y2 = y - R * math.sin(T)
T += delta
if T > 2*math.pi:
T = 0
can.coords(rond3,x2,y2,x2+30,y2+30)
if flag >0:
fen1.after(30,move0)
def stop():
"arret de l'animation"
global flag
flag =0
def start():
"démarrage de l'animation"
global flag
if flag ==0: # pour ne lancer qu'une seule boucle
flag =1
move()
move0()
#------------------#
x0, y0 = 90, 125
x1, y1 = 190, 130
x2, y2 = 270, 100
flag, t, T, r, R = 0, 0, 0, 50, 150
x, y = x0+r, y0
fen1 = Tk()
fen1.title("Exercice d'animation avec Tkinter")
can = Canvas(fen1, bg ='dark grey', height= 300, width= 300)
can.pack(side = LEFT, padx= 5, pady=5)
rond = can.create_oval(x, y, x+30, y+30, width=2, fill='blue')
rond2 = can.create_oval(x1, y1, x1+30, y1+30, width=2, fill='red')
rond3 = can.create_oval(x2, y2, x2+30, y2+30, width=2, fill='green')
Bouton1 = Button(fen1, text= "Démarrer", width= 10, command= start).pack()
Bouton2 = Button(fen1, text= "Arrêter", width= 10, command= stop).pack()
fen1.mainloop()
C'est un exercice de Swinnen ça non ?
Je ne vois pas ce que tu veux de plus par rapport à ton code, au niveau où se situe l'exercice dans le livre je doute qu'on en attende plus que ça
Sinon si tu veux t'entrainer tu peux essayer de le faire en version POO (en créant par exemple une classe planète) qui te permettrai de rajouter des planètes, voir de mettre des satellites sur les planètes
Oui c'est le livre de swinnen, si tu n'en es pas à la POO (tu n'as pas entendu parler de classe), oublie ce que j'ai dit et continue ton apprentissage.
Les affectations sont ici inutiles car en fait tu récupères la valeur retourné par la méthode 'pack' (tu ne récupères pas du tout le widget Button), Swinnen en parle quelque part dans son livre (quand il parle de la méthode grid, si tu n'en es pas encore là soit attentif à ce moment là )
Si tu veux juste créer les boutons (ce qui est largement suffisant) tu peux juste faire :
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
Blond, bouclé, toujours le sourire aux lèvres...