# Créé par pdevouges, le 28/03/2015 en Python 3.2 from tkinter import * #Certaines variables sont globales car elles sont utilisées et changées par des fonctions #La méthode coords sur l'objet c, instance de la classe Canvas, permet de changer les coordonnées d'un élément de ce canevas. #La méthode after sur l'objet f,instance de la classe Tk, permet l'animation des figures d'un canevas de f #La méthode bind sur l'objet f, permet de lier un évènement à une fonction #Les variables globales a1,b1,c1,d1 permettent de démarrer l'animation #Les fonctions de paramètre event, lièes à la méthode bind, changent les valeurs de a1,b1,c1,d1 # et font appel aux fonctions qui permettent le déplacement #Par exemple depdroite(event) fait appel à deplacedroite() def deplacedroite(): global x,y,rond,xbis,ybis,xter,yter xter=xbis yter=ybis xbis=x ybis=y c.coords(rondbis,xbis-ray,ybis-ray,xbis+ray,ybis+ray) c.coords(rondter,xter-ray,yter-ray,xter+ray,yter+ray) x=x+2*ray c.coords(rond,x-ray,y-ray,x+ray,y+ray) if x==300: x=0 if d1==1: f.after(100,deplacedroite) def deplacegauche(): global x,y,rond,xbis,ybis,xter,yter xter=xbis yter=ybis xbis=x ybis=y c.coords(rondbis,xbis-ray,ybis-ray,xbis+ray,ybis+ray) c.coords(rondter,xter-ray,yter-ray,xter+ray,yter+ray) x=x-2*ray c.coords(rond,x-ray,y-ray,x+ray,y+ray) if x==0: x=300 if c1==1: f.after(100,deplacegauche) def deplacehaut(): global x,y,rond,xbis,ybis,xter,yter xter=xbis yter=ybis xbis=x ybis=y c.coords(rondbis,xbis-ray,ybis-ray,xbis+ray,ybis+ray) c.coords(rondter,xter-ray,yter-ray,xter+ray,yter+ray) y=y-2*ray c.coords(rond,x-ray,y-ray,x+ray,y+ray) if y==0: y=200 if b1==1: f.after(100,deplacehaut) def deplacebas(): global x,y,rond,xbis,ybis,xter,yter xter=xbis yter=ybis xbis=x ybis=y c.coords(rondbis,xbis-ray,ybis-ray,xbis+ray,ybis+ray) c.coords(rondter,xter-ray,yter-ray,xter+ray,yter+ray) y=y+2*ray c.coords(rond,x-ray,y-ray,x+ray,y+ray) if y==200: y=0 if a1==1: f.after(100,deplacebas) def depbas(event): global a1,b1,c1,d1 a1=1 b1=0 c1=0 d1=0 deplacebas() def dephaut(event): global a1,b1,c1,d1 a1=0 b1=1 c1=0 d1=0 deplacehaut() def depgauche(event): global a1,b1,c1,d1 a1=0 b1=0 c1=1 d1=0 deplacegauche() def depdroite(event): global a1,b1,c1,d1 a1=0 b1=0 c1=0 d1=1 deplacedroite() a1,b1,c1,d1=0,0,0,0 ray=5 #rayon des disques x,y=100,100 xbis,ybis=x-2*ray,100 xter,yter=x-4*ray,100 f=Tk() c=Canvas(f,height=200,width=300,bg='ivory') rond= c.create_oval(x-ray,y-ray,x+ray,y+ray,outline='blue',fill='black') rondbis= c.create_oval(xbis-ray,ybis-ray,xbis+ray,ybis+ray,outline='red',fill='black') rondter= c.create_oval(xter-ray,yter-ray,xter+ray,yter+ray,outline='red',fill='black') f.bind("",dephaut) f.bind("",depbas) f.bind("",depgauche) f.bind("",depdroite) c.pack(side=TOP) b=Button(f,text="Quitter",command=f.destroy) b.pack() #f.bind("", maFonction) # Flèche haut #f.bind("", maFonction2) # Bas #f.bind("", maFonction3) # Gauche #f.bind("", maFonction4) # Droite #f.bind("", maFonction5) # barre d'espace #f.bind("", maFonction6) # lettre A f.mainloop()