IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Tkinter Python Discussion :

une erreur de x?


Sujet :

Tkinter Python

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut une erreur de x?
    je voudrais faire apparaitre un petit cercle rouge r=2 à l'endroit du click et oh surprise il n'apparait pas ,il me semble pourtant bien avoir relié cercle avec le click <Button-1>
    Voila mon code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #! /usr/bin/env python
    # -*- coding: Latin-1 -*-
     
    # Détection et positionnement d'un clic de souris dans une fenêtre :
     
    from Tkinter import * 
    def  pointeur(event):
        chaine.configure(text = "clic détecté en x =" +str(event.x)+\
        ",y="+str(event.y))
     
     
     
    def cercle(x, y, r, coul):
        can.create_oval(x-r, y-r, x+r, y+r, fill=coul)
     
     
     
     
    fen1 =Tk()
    can =Canvas(fen1,width = 200,height = 150,bg = 'ivory')
     
    can.bind("<Button-1>",pointeur)
    can.pack()
    r=2
    cercle(x,y,'red')
     
    can.bind("<Button-1>",cercle)
    can.pack()
    chaine = Label(fen1)
    chaine.pack()
     
    fen1.mainloop()

    Merci pour votre aide

  2. #2
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    Ce code -ci fonctionne mais le point rouge n'apparait pas ???
    Et sans message d'erreur! Bizarre non?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    #! /usr/bin/env python
    # -*- coding: Latin-1 -*-
     
    # Détection et positionnement d'un clic de souris dans une fenêtre :
     
    from Tkinter import * 
    def  pointeur(event):
        chaine.configure(text = "clic détecté en x =" +str(event.x)+\
        ",y="+str(event.y))
     
     
     
     
    fen1 =Tk()
    can =Canvas(fen1,width = 200,height = 150,bg = 'ivory')
    x,y =0,0
    cercle = can.create_oval(x,y,y+2,y+2,width=4,fill='red')
    can.bind("<Button-1>",pointeur)
    can.pack()
    can.bind("<Button-1>",pointeur,cercle)
    can.pack()
    chaine = Label(fen1)
    chaine.pack()
     
    fen1.mainloop()

  3. #3
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonjour,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    #! /usr/bin/env python
    # -*- coding: Latin-1 -*-
     
    # Détection et positionnement d'un clic de souris dans une fenêtre :
     
    from Tkinter import *
     
    def  cercle(event):
        x = can.canvasx(event.x)
        y = can.canvasy(event.y)
        chaine.configure(text = "clic détecté en x =" +str(event.x)+\
        ",y="+str(event.y))
        can.coords(moncercle, (event.x, event.y, event.x+2, event.y+2))
     
    fen1 =Tk()
    can =Canvas(fen1,width = 200,height = 150,bg = 'ivory')
    x,y =0,0
    moncercle = can.create_oval(x,y,x+2,y+2, fill='red')
    can.bind("<Button-1>",cercle)
    can.pack()
    chaine = Label(fen1)
    chaine.pack()
     
    fen1.mainloop()
    Et attention aux noms de variables (def cercle, cercle = can.create_oval)

    @+

  4. #4
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    Merci pour ton code.
    Pour suivre mon apprentissage dans les règles j'ai préféré faire comme ca
    Dis moi ce que tu en penses.

    C'est plus clair(pour le moment de separer les deux def...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
     
    # -*- coding:Utf-8 -*-
     
    from Tkinter import *
    def pointeur(event):
        chaine.configure(text = "clic détecté en x =" +str(event.x)+\
            ",y="+str(event.y))
     
     
    def  cercle(event):
        x = can.canvasx(event.x)
        y = can.canvasy(event.y)
     
        can.coords(moncercle, (event.x, event.y, event.x+2, event.y+2))
     
    fen1 =Tk()
    can =Canvas(fen1,width = 200,height = 150,bg = 'ivory')
    x,y =0,0
    moncercle = can.create_oval(x,y,x+2,y+2, fill='red')
    can.bind("<Button-1>",cercle)
    can.pack()
    chaine = Label(fen1)
    chaine.pack()
     
    fen1.mainloop()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    Cependant avec ton code ou celui que j'ai refait tu as soit le point rouge soit la phrase coordonnéees etc.. comment faire pour avoir les deux?

  6. #6
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    La on relie le clic gauche avec le cercle mais plus avec le pointeur....

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    can.bind("<Button-1>",cercle)
    can.pack()
    chaine = Label(fen1)
    chaine.pack()

  7. #7
    Expert confirmé Avatar de PauseKawa
    Homme Profil pro
    Technicien Help Desk, maintenance, réseau, système et +
    Inscrit en
    Juin 2006
    Messages
    2 725
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Technicien Help Desk, maintenance, réseau, système et +
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Juin 2006
    Messages : 2 725
    Points : 4 005
    Points
    4 005
    Par défaut
    Bonsoir,

    Je ne vois pas l'intérêt de séparer deux actions qui dépendent du même évenement.

    Citation Envoyé par yvkoe Voir le message
    Cependant avec ton code ou celui que j'ai refait tu as soit le point rouge soit la phrase coordonnéees etc.. comment faire pour avoir les deux?
    Dans mon code tu as les deux. Attention à l'indentation.

    Si tu souhaite vraiment les séparer fais un can.bind("<Button-1>",OnClick)

    et un def du style :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def OnClick(event):
        pointeur(event)
        cercle(event)
    Cela te donne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    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
    # -*- coding:Utf-8 -*-
     
    from Tkinter import *
    def pointeur(event):
        chaine.configure(text = "clic détecté en x =" +str(event.x)+\
            ",y="+str(event.y))
     
    def  cercle(event):
        x = can.canvasx(event.x)
        y = can.canvasy(event.y)
        can.coords(moncercle, (event.x, event.y, event.x+2, event.y+2))
     
    def OnClick(event):
        pointeur(event)
        cercle(event)
     
    fen1 =Tk()
    can =Canvas(fen1,width = 200,height = 150,bg = 'ivory')
    x,y =0,0
    moncercle = can.create_oval(x,y,x+2,y+2, fill='red')
    can.pack()
    chaine = Label(fen1)
    chaine.pack()
    can.bind("<Button-1>",OnClick)
     
    fen1.mainloop()
    Pose toi la question de l'utilité du :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        x = can.canvasx(event.x)
        y = can.canvasy(event.y)
    Bon courrage

    @+

  8. #8
    Membre du Club
    Profil pro
    Inscrit en
    Août 2007
    Messages
    144
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Août 2007
    Messages : 144
    Points : 68
    Points
    68
    Par défaut
    super !!!
    merci beaucoup et bonne soirée.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. gestion d'une erreur
    Par Jeannotc dans le forum Bases de données
    Réponses: 8
    Dernier message: 25/06/2004, 18h04
  2. C++Builder fait une erreur de calcul
    Par gandf dans le forum C++Builder
    Réponses: 7
    Dernier message: 03/01/2004, 22h27
  3. [VB6] Source D'une erreur
    Par krest dans le forum VB 6 et antérieur
    Réponses: 6
    Dernier message: 16/07/2003, 17h33
  4. [procédure PG] Une erreur mystérieuse...ou pas
    Par doohan dans le forum PostgreSQL
    Réponses: 2
    Dernier message: 09/07/2003, 17h16
  5. Ne pas formater une erreur
    Par Sylvain Leray dans le forum XMLRAD
    Réponses: 2
    Dernier message: 18/03/2003, 14h13

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo