Partage
  • Partager sur Facebook
  • Partager sur Twitter

probleme avec Tkinter

Sujet résolu
    10 juillet 2013 à 15:54:01

    Salut, j'essaie de faire un programme permettant de déplacer deux boules de couleurs, d'en mesurer la distance, et de l'afficher, mais rien n'y fait, il refuse d'afficher la distance, et il ne m'indique aucune erreur,

    voici mon programme

    from Tkinter import*
    from math import sqrt
    
    def avance(gd,hb):
    	global x1,y1
    	x1,y1=x1+gd,y1+hb
    	can1.coords(oval1,x1,y1,x1+15,y1+15)
    	
    	if x1<0:
    		x1=0
    	elif x1>285:
    		x1=285
    	elif y1<0:
    		y1=0
    	elif y1>285:
    		y1=285
    	
    def depl_gauche():
    	avance(-2,0)
    	
    def depl_droite():
    	avance(2,0)
    	
    def depl_haut():
    	avance(0,-2)
    	
    def depl_bas():
    	avance(0,2)
    
    def avance1(gr,hc):
    	global x2,y2
    	x2,y2=x2+gr,y2+hc
    	can1.coords(oval2,x2,y2,x2+15,y2+15)
    	
    	
    	if x2<0:
    		x2=0
    	elif x2>285:
    		x2=285
    	elif y2<0:
    		y2=0
    	elif y2>285:
    		y2=285
    	
    def depl_gauche1():
    	avance1(-2,0)
    	
    def depl_droite1():
    	avance1(2,0)
    	
    def depl_haut1():
    	avance1(0,-2)
    	
    def depl_bas1():
    	avance1(0,2)
    	
    def distance():
    	global x1,x2,y1,y2,a,b,c
    	a=x2-x1
            b=y2-y1
            c=sqrt((a*a)+(b*b))
    	chaine.configure(text="distance ="+str(c),fill='red')
    	
    
    x1,y1=10,10
    x2,y2=10,35
    a,b,c=0,0,0
    
    fen1=Tk()
    fen1.title("animation trop cool")
    
    
    can1=Canvas(fen1,bg='light green',height=300,width=300)
    chaine=Label(fen1)
    chaine.pack(side=BOTTOM)
    can1.bind(distance)
    oval1=can1.create_oval(x1,y1,x1+15,y1+15,width=2,fill='red')
    oval2=can1.create_oval(x2,y2,x2+15,y2+15,width=2,fill='blue')
    can1.pack(side=LEFT)
    Button(fen1,text='quitter',command=fen1.quit,height=2).pack(side=TOP)
    
    Button(fen1,text='gauche',command=depl_gauche).pack()
    Button(fen1,text='droite',command=depl_droite).pack()
    Button(fen1,text='haut',command=depl_haut).pack()
    Button(fen1,text='bas',command=depl_bas).pack()
    
    Button(fen1,text='gauche',command=depl_gauche1).pack()
    Button(fen1,text='droite',command=depl_droite1).pack()
    Button(fen1,text='haut',command=depl_haut1).pack()
    Button(fen1,text='bas',command=depl_bas1).pack()
    
    
    fen1.mainloop()


     

    Merci d'avance.

    -
    Edité par Zeljius 10 juillet 2013 à 16:05:16

    • Partager sur Facebook
    • Partager sur Twitter
    Anonyme
      10 juillet 2013 à 17:19:54

      Bonjour,

      Je te conseille de lire ce tutoriel

      • Partager sur Facebook
      • Partager sur Twitter
        10 juillet 2013 à 17:48:45

        Salut, j'ai compris que x et y correspondaient au clic de la souris, mais concretement, que dois je modifier pour parvenir au bon résultat ?

        • Partager sur Facebook
        • Partager sur Twitter
        Anonyme
          10 juillet 2013 à 20:34:23

          En regardant le tutoriel et en regardant la ligne ci-dessous, tu dois voir le problème non?

          can1.bind(distance)

          On appelle un callback à l'aide d'un click de souris, d'un appui sur une touche, ...

          Et toi?

          Où se trouve le event (paramètre de fonction) du tutoriel dans ta fonction?

          Bref relis le tutoriel...

          -
          Edité par Anonyme 10 juillet 2013 à 20:34:47

          • Partager sur Facebook
          • Partager sur Twitter
            11 juillet 2013 à 10:43:48

            Ok, j'ai compris mon erreur, merci :)
            • Partager sur Facebook
            • Partager sur Twitter

            probleme avec Tkinter

            × 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.
            • Editeur
            • Markdown