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 :

Passer des paramètres a une fonction à travers un tag


Sujet :

Tkinter Python

  1. #1
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Points : 8
    Points
    8
    Par défaut Passer des paramètres a une fonction à travers un tag
    Bonjour,

    Je ne sais pas si mon intitulé est très clair. Voilà le souci : j'aimerai en cliquant sur une image dans un canvas pouvoir récupérer une valeur associé à cette image. Pour cela je suis passé par les tag et ai essayé d'utiliser les expression lambda...mais ça ne fonctionne pas comme avec les boutons (voir cette page.)
    Existe-il un moyen ? Ou je suis obligé de passer par des boutons ?

    Voilà le code sur lequel j'ai essayé mes expériences infructueuses :
    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
    from Tkinter import *
     
    def f_choisir(event):
    	print "choisit "
     
    root = Tk()
    c = Canvas(root)
    c.pack()
     
    # image 
    fond = PhotoImage(file="jetonNoir.gif")
    bouton = PhotoImage (file="jetonBlanc.gif") 
     
    # création des images
    c.create_image(0, 0, image=fond, anchor=NW)
     
    for i in range(5):
        c.create_image(100*i, 100, image=bouton, tag="choisir"+str(i))
     
    # tag
    # c'est là le problème : comment faire passer une valeur dans la fonction 'f_choisir' en fonction de i ?
        c.tag_bind("choisir"+str(i), "<Button-1>", f_choisir)
     
    root.mainloop()
    Merci d'avance.

  2. #2
    Membre actif Avatar de Gaillac
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    165
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Avril 2008
    Messages : 165
    Points : 209
    Points
    209
    Par défaut
    je ne suis pas sûr de ton problèmpe mais sinon, dans ce même forum mais nettement plus vieux, il y a ça:
    http://www.developpez.net/forums/sho...d.php?t=233721
    qui tendrait à montrer que finalement les expressions lambda... ben ça marche encore.

  3. #3
    Futur Membre du Club
    Inscrit en
    Mars 2008
    Messages
    10
    Détails du profil
    Informations forums :
    Inscription : Mars 2008
    Messages : 10
    Points : 8
    Points
    8
    Par défaut
    En effet ça marche plutôt bien. J'avais pas compris qu'il fallait que j'écrive i=i dans mon expression lambda pour que i=i justementl Je comprend pas tout ce qui ce passe mais ça marche. lol

    Merci beaucoup ça va me permettre d'aller énormément plus loin dans mon programme.

    le code d'exemple modifié :
    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
    from Tkinter import *
     
    def f_choisir(event,i):
    	print "choisit "+str(i)
     
    root = Tk()
    c = Canvas(root)
    c.pack()
     
    # image 
    fond = PhotoImage(file="jetonNoir.gif")
    bouton = PhotoImage (file="jetonBlanc.gif") 
     
    # création des images
    c.create_image(0, 0, image=fond, anchor=NW)
     
    for i in range(5):
        c.create_image(100*i, 100, image=bouton, tag="choisir"+str(i))
     
    # tag
    # c'est là le problème : comment faire passer une valeur dans la fonction 'f_choisir' en fonction de i ?
        c.tag_bind("choisir"+str(i), "<Button-1>", lambda event,i=i : f_choisir(event,i))
     
    root.mainloop()

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

Discussions similaires

  1. Réponses: 3
    Dernier message: 16/05/2007, 10h03
  2. Perl - C : Passer des args a une fonction C
    Par Invité dans le forum Langage
    Réponses: 4
    Dernier message: 01/05/2006, 10h35
  3. Réponses: 1
    Dernier message: 21/03/2006, 14h29
  4. Evaluations des paramètres d'une fonction
    Par WebPac dans le forum Langage
    Réponses: 15
    Dernier message: 06/10/2005, 09h46
  5. Passer en paramètre d'une fonction (...)
    Par Captain_JS dans le forum C++
    Réponses: 5
    Dernier message: 03/11/2004, 07h18

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