Script qui ne marche pas (gros débutant)

Résolu
kers50 Messages postés 12 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 15 novembre 2015 - 28 avril 2009 à 13:03
kers50 Messages postés 12 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 15 novembre 2015 - 4 mai 2009 à 22:39
bonjour tout le monde,

je prévient je suis vraiment un débutant j'ai commencer y a quelque jour à apprendre à programmer avec python en tant qu'amateur, pour apprendre je lit le livre " Gérard Swinnen : Apprendre à programmer avec Python" mais je suis arriver à un exercice où il n'y a pas de correction et j'ai beau chercher je trouve pas mon erreur le script que je doit réaliser  en gros est de créer une fenêtre ou se trouve un Canvas où il doit avoir une balle qui doit se déplacer a l'endroit où l'on clic avec la souris.
voilà le script que j'ai réaliser (je vous rappelle je suis un débutant alors il se peut grandement que mon script soi totalement faut ![javascript:Insert_Emoticon('/imgs2/smile_blush.gif'); ]) :

from Tkinter import *
#def :
def pointeur(event):
    a,b=event.x,event.y
    avance(a,b)
def avance(x1,y1):
    global x1,y1
    can1.coords(oval1, x1, y1, x1+30, y1+30)
#programme principal :
x1, y1 = 10, 10
fen1=Tk()
can1 = Canvas(fen1,bg='dark grey',height=300,width=300)
can1.pack()
oval1 = can1.create_oval(x1,y1,x1+30,y1+30,width=1,fill='red')
can1.bind("",pointeur)
fen.mainloop()

merci d'avance de votre aide qui me sera de grande utilité pour mon aprentissage.

2 réponses

aera group Messages postés 382 Date d'inscription mercredi 23 août 2006 Statut Membre Dernière intervention 8 novembre 2010 18
4 mai 2009 à 13:57
Le problème vient de ta fonction avance est plus précisément dans le nom de tes paramètres ! En effet, tu utilise le même nom que les variables global que tu appelles après or il faut pouvoir les distingué d'où l'utilisation d'une autre notion pour tes paramètres ou plus simplement en supprimant ta ligne qui appelle les variables globales qui ici ne serve à rien !!!
Autre remarque, tu utilise fen.mainloop à la fin, or fen n'est pas définit ! C'est fen1 qu'il faut utiliser !!!

Enfin, tel qu'il est écrit ton programme cré un cerche mais qui n'est pas centré en l'endroit ou en clique !!! Voici ma version !!

from Tkinter import *

r = 10 # Rayon du cercle en pixels
h = 300 # Hauteur du canvas
l = 300 # Largueur du canvas

def pointeur(event):
    a,b=event.x,event.y
    avance(a,b)
def avance(x,y):
    can.coords(ovale,x-r,y-r,x+r,y+r)

fen=Tk()
can = Canvas(fen,bg='blue',height=h,width=l)
can.pack()
ovale = can.create_oval(l/2-r,h/2-r,l/2+r,h/2+r,width=1,fill='red')
can.bind("",pointeur)
fen.mainloop()
______
Aéra
3
kers50 Messages postés 12 Date d'inscription mardi 11 août 2009 Statut Membre Dernière intervention 15 novembre 2015
4 mai 2009 à 22:39
Merci beaucoup pour ton aide Aéra
0
Rejoignez-nous