| 19 super jéjé, le 3 oct 2003 à 10:54:10Salut , et oui , c'est encore moi , ce coup ci je viens pour eutre chose , mon probléme est le suivant :
je desire afficher un cercle dans un canvas a l'endroit ou je clique avec la souris et a chaque fois que je clique , pour le moment j'ai un code qui me permet d'avoir les coordonnées de la souris je vous met le code ici:
from Tkinter import *
def pointeur(event):
chaine['text'] = "Clic detecte en X=" + str(event.x) + ",Y =" + str(event.y)
def drawcircle ():
global x1,y1,x2,y2,coul,outline
cadre.create_oval (x1,y1,x2,y2,width=2,outline='red',fill=coul)
fen = Tk(className="positionnement de souris")
cadre = Canvas (fen,width =200, height =150 , bg ="light yellow")
cadre.bind("<Button-1>",pointeur)
cadre.pack()
chaine = Label(fen)
chaine.pack()
fen.mainloop()
voila dite moi comment je fait apres please...
merci d'avance Répondre à super jéjé | Et hop !
from Tkinter import *
def drawcircle (w, x,y):
w.create_oval (x-5,y-5,x+5,y+5,width=2,outline='red',fill='white')
def pointeur(event):
chaine['text'] = "Clic detecte en X=" + str(event.x) + ",Y =" + str(event.y)
drawcircle(event.widget,event.x,event.y)
fen = Tk(className="positionnement de souris")
cadre = Canvas (fen,width =200, height =150 , bg ="light yellow")
cadre.bind("<Button-1>",pointeur)
cadre.pack()
chaine = Label(fen)
chaine.pack()
fen.mainloop()
La méthode pointeur() est apelée à chaque clic.
pointeur() va appeler drawcircle().
event.widget est le widget dans lequel s'est passé l'évènement (en l'occurrence: notre canvas cadre.)
J'ai évité d'utiliser directement cadre.create_oval() de telle sorte que pointeur() et drawcircle() puissent être réutilisés avec d'autres canvas.
(Evite d'utiliser global tant que possible.) Répondre à sebsauvage | 21 super jéjé, le 3 oct 2003 à 11:51:58Ok , cool ca fonctionne , peut tu m'expliquez , deja d'une part , il faut eviter d'utiliser global , et d'autre part la definition w de create_oval .
et puis si je n'abuse pas trop , quelle est la methode pour attraper l'heure de ma machine ...
j'espere que je n'abuse pas , c'est tres cool de m'aider dans mon apprentissage merci ... Répondre à super jéjé | Il faut généralement éviter les variables globales.
ça fini toujours par mener à des horreurs et des prises de tête (expérience en VB).
w est juste un paramètre.
Quand tu écris: "def drawcircle (w, x,y):", ça veut juste dire: "C'est une fonction qui s'appelle drawcircle et qui prend 3 objets en entrée: w, x et y."
Quand on appelle drawcircle:
drawcircle(event.widget,event.x,event.y)
event.widget va se retrouver dans la variable w
event.x va se retrouver dans la variable x
event.y va se retrouver dans la variable y
(Il y a également une possiblité pour spécifier les paramètres dans le désordre ou des paramètres optionnels, mais je n'en parle pas pour le moment :-) Répondre à sebsauvage |
|
|
| 26 yoyo85, le 14 avr 2009 à 22:11:34Moi je fais ça et c la meilleur reponse!!!
#_*_ coding=latin-1_*_
from Tkinter import *
from math import *
"definition du cercle et du pointeur souris"
def cercle(event):
cadre.create_oval(event.x-5,event.y-5,event.x+5,event.y+5,outline='red')
fen = Tk()
cadre = Canvas(fen, width =500, height =500, bg="light yellow")
cadre.bind("<Button-1>", cercle)
cadre.pack(padx=5,pady=5)
fen.mainloop()
voila c cool! non? Répondre à yoyo85 |
|