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 :

clic et dessin


Sujet :

Tkinter Python

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut clic et dessin
    bonjour

    j'ai dans 1 fonction ouvert une fenêtre contenant 1 image

    je veux cliquer sur l'image (ça c'est pas difficile) mais je voudrais récupérer les coordonnées du point à l'aide de bind (dont je n'ai pas compris le fonctionnement) afin de les stocker dans une liste à 2 éléments

    merci beaucoup pour votre aide

    PS : si besoin j'peux rajouter des extraits de codes

  2. #2
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Salut,

    Tu utilises quel bibliothèque graphique ? Tkinter, wxpython, ... ?

    Su c'est Tkinter, tu as un exemple tout fait ici :
    http://python.developpez.com/cours/T...apitre8#L8.3.4 (partie 8.3.4)
    => remplace le frame par ton image et change la fonction "pointeur" avec un truc du genre "ta_liste_de_points.append((event.x,event.y))"

    -

  3. #3
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    oui j'utilise Tkinter


    mais dans mon cas, la fenêtre est définie dans 1 autre fonction alors est-ce que je peux récupérer les coordonnées de cette façon

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def fenetre(image):
        #definition de la fenetre
    def algo():
        fenetre=fenetre(image)
        liste=();
        fenetre.bind("<Button-1>",liste.append(event.x,event.y))
        fenetre.pack()
    ou alors j'suis obligé de tout faire dans la même fonction ?

    merci

  4. #4
    Membre averti
    Inscrit en
    Janvier 2007
    Messages
    329
    Détails du profil
    Informations forums :
    Inscription : Janvier 2007
    Messages : 329
    Points : 366
    Points
    366
    Par défaut
    Ça serait plutôt comme ça :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    def fenetre(image):
        #definition de la fenetre
        return ta_fenetre
     
    def algo():
        fenetre = fenetre(image)
        liste = [];
        fenetre.bind("<Button-1>", lambda event: liste.append((event.x, event.y)))
        fenetre.pack()
    (pas testé)

    -

  5. #5
    Membre à l'essai
    Inscrit en
    Mai 2009
    Messages
    26
    Détails du profil
    Informations forums :
    Inscription : Mai 2009
    Messages : 26
    Points : 12
    Points
    12
    Par défaut
    j'ai essayé de tester (j'ai pris 1 image toute c*nne) mais avec mon code j'ai 1 erreur

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    image=PhotoImage(file="tux.gif")#l'image se trouve dans le même dossier que le .py
    fen=fenetre(image)
    w1=image.width()
    h1=image.height()
    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
     
    <type 'exceptions.RuntimeError'>          Traceback (most recent call last)
     
    /home/j/<ipython console> in <module>()
     
    /home/j/morphing.py in triangulation()
         15         return win
         16 def triangulation():
    ---> 17         image=PhotoImage(file="tux.gif")
         18         fen=fenetre("tux.gif")
         19         w1=image.width()
     
    /usr/local/lib/python2.5/lib-tk/Tkinter.py in __init__(self, name, cnf, master, **kw)
       3268         Valid resource names: data, format, file, gamma, height, palette,
       3269         width."""
    -> 3270         Image.__init__(self, 'photo', name, cnf, master, **kw)
       3271     def blank(self):
       3272         """Display a transparent image."""
     
    /usr/local/lib/python2.5/lib-tk/Tkinter.py in __init__(self, imgtype, name, cnf, master, **kw)
       3209             master = _default_root
       3210             if not master:
    -> 3211                 raise RuntimeError, 'Too early to create image'
       3212         self.tk = master.tk
       3213         if not name:
     
    <type 'exceptions.RuntimeError'>: Too early to create image
    pourtant PhotoImage prend bien 1 fichier en argument !

  6. #6
    Expert éminent sénior
    Avatar de Guigui_
    Homme Profil pro
    Ingénieur développement logiciels
    Inscrit en
    Août 2002
    Messages
    1 864
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement logiciels
    Secteur : Enseignement

    Informations forums :
    Inscription : Août 2002
    Messages : 1 864
    Points : 10 067
    Points
    10 067

Discussions similaires

  1. Affichage d'un dessin dans un Canvas lors d'un clic sur une image
    Par totooo dans le forum Développement Mobile en Java
    Réponses: 1
    Dernier message: 19/06/2009, 11h26
  2. Dessiner après un clic
    Par rocel dans le forum Windows
    Réponses: 3
    Dernier message: 18/05/2009, 17h00
  3. Clic sur un dessin
    Par PopovSquare dans le forum Interfaces Graphiques en Java
    Réponses: 2
    Dernier message: 10/09/2007, 23h38
  4. Réponses: 4
    Dernier message: 10/09/2006, 19h06
  5. Clic sur un dessin
    Par sozie9372 dans le forum 2D
    Réponses: 5
    Dernier message: 23/05/2006, 12h50

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