Deplacement de Canvas sur Tkinter
Bonjour,
j'aimerai pour un projet faire afficher l'animation du déplacement d'un cercle sur ma fenêtre. Malheureusement, lorsque mon programme s'exécute, il n'affiche que la position finale du cercle et je n'arrive pas à comprendre pourquoi.(Le premier programme sert juste à récupérer les couples de coordonnées du cercle au cours du temps)
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47
|
##Programme
compteurtrajectoire=0
from tkinter import *
from math import *
fenetre=Tk()
fenetre.title("Terrain")
Terrain=Canvas(fenetre,height=600,width=1000)
Terrain.pack() #insertion du terrain dans la fenêtre
Balle=Terrain.create_oval(0,0,40,40,fill='yellow')
L1=[0,0]
L2=[500,200]
def coordonneesTrajectoire(L1,L2):#détermination des coordonnées de la balle lors de sont déplacement
m=(L2[1]-L1[1])/(L2[0]-L1[0]) #coefficient directeur de la pente si les Y sont différents
if L1[0]==L2[0]:
L1[0]+=1
if abs(m)<=1:
X=[i for i in range(L1[0],L2[0])]
Y=[floor(m*(x-L1[0])+L1[1]) for x in X]
if abs(m)>1:
Y=[i for i in range(L1[1],L2[1])]
X=[floor((1/m)*(y-L1[1])+L1[0]) for y in Y]
X=[0]+X
Y=[0]+Y
lancer(X,Y)
def lancer(X,Y):
global Balle
global compteurtrajectoire
if compteurtrajectoire<len(X)-1:
dx=X[compteurtrajectoire+1]-X[compteurtrajectoire]
dy=Y[compteurtrajectoire+1]-Y[compteurtrajectoire]
Terrain.move(Balle,dx,dy)
compteurtrajectoire+=1
Terrain.after(100,lancer(X,Y))
coordonneesTrajectoire(L1,L2)
fenetre.mainloop() |