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 65 66 67 68
| 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[1], y[1],x[2],y[2]) #dist bleu-jaune
di[1] = distance(x[2], y[2],x[0],y[0]) #dist rouge-jaune
di[2] = distance(x[0], y[0],x[1],y[1]) #dist rouge-bleu
while i<len(di):
if i != n.get():
valDis[i].configure(text="Distance "+str(i) +"= " +str(di[i]))
print(x) # test
i=i+1
# gestionnaires d'événements :
#------ Programme principal -------
x=[0,100,200] # coordonnées initiales
y=[100,100,100]
oval=[0,0,0]
di=[0,0,0]
valDis=[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[0] = Label(fen, text="Distance0")
valDis[0].pack()
valDis[1] = Label(fen, text="Distance1")
valDis[1].pack()
valDis[2] = Label(fen, text="Distance2")
valDis[2].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