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 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64
| from tkinter import *
from math import sqrt
def distance(x1, y1, x2, y2):
"distance séparant les points x1,y1 et x2,y2"
d = sqrt((x2-x1)**2 + (y2-y1)**2) # théorème de Pythagore
return d
# procédure générale de déplacement :
def pointeur(event):
i=0
x[n.get()],y[n.get()]=event.x,event.y
can1.coords(oval[n.get()], event.x,event.y, event.x+30,event.y+30)
di[0] = distance(x[2], y[2],x[1],y[1])
di[1] = distance(x[2], y[2],x[0],y[0])
di[2] = distance(x[0], y[0],x[1],y[1])
while i<len(di)():
if i != n.get():
valDis.configure(text="Distance "+str(i) +"= " +str(di[i]))
i=i+1
# gestionnaires d'événements :
#------ Programme principal -------
# les variables suivantes seront utilisées de manière globale :
x=[0,100,200] # coordonnées initiales
y=[100,100,100]
oval=[0,0,0]
di=[0,0,0]
# Création du widget principal ("maître") :
fen = Tk()
fen.title("Exercice d'animation avec tkinter")
n=IntVar()
# création des widgets "esclaves" :
can1 = Canvas(fen,bg='dark grey',height=300,width=300)
oval[0] = can1.create_oval(x[0],y[0],x[0]+30,y[0]+30,width=2,fill='red')
oval[1] = can1.create_oval(x[1],y[1],x[1]+30,y[1]+30,width=2,fill='blue')
oval[2] = can1.create_oval(x[1],y[1],x[1]+30,y[1]+30,width=2,fill='yellow')
can1.bind("<Button-1>",pointeur)
can1.pack(side=TOP)
valDis = Label(fen, text="Distance1")
valDis.pack()
valDis1 = Label(fen, text="Distance2")
valDis1.pack()
rButton=Radiobutton(fen,text='rouge',variable=n,value=0)
rButton.pack()
rButton1=Radiobutton(fen,text='bleu',variable=n,value=1)
rButton1.pack()
rButton2=Radiobutton(fen,text='jaune',variable=n,value=2)
rButton2.pack()
rButton.select()
# démarrage du réceptionnaire d’évènements (boucle principale) :
fen.mainloop() |
Partager