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

Python Discussion :

question liée au module filedialog de tkinter


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut question liée au module filedialog de tkinter
    Bonjour, chers internautes, j'ai une petite question.

    Je programme depuis quelque temps un éditeur de map. J'ai donc créé des menu déroulants avec .add_command() et je suis maintenant confronté à un problème. J'aimerais savoir s'il est possible de mettre un paramètre à la fonction appelée par cette instruction.
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    mabarre.add_command(label='truc cool', command=MaFonction)
    je voudrais mettre un paramètre à MaFonction

    Voilà, merci d'avance pour les réponse.

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 741
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Manche (Basse Normandie)

    Informations professionnelles :
    Activité : Architecte technique retraité
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2008
    Messages : 21 741
    Par défaut
    Salut,
    C'est pas complique a écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def maFonction(p):
         print (p)
     
    v = 123
    mabarre.add_command(label='truc cool', command=lambda :maFonction(v))
    # ou bien
    mabarre.add_command(label='truc cool', command=lambda z=v:maFonction(z))
    une des formes "lambda" équivaut a écrire la fonction ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    def maFonction(p):
         def action():
              print (p)
         return action
     
    ...
    mabarre.add_command(label='truc cool', command=maFonction(v))
    On peut aussi faire comme ca:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    class Command(object):
            def __init__(self, func, *args, **kwds):
                 self.__data = (func, args, kwds)
            def __call__(self):
                 func, args, kwds = self.__data
                 func(*args, **kwds)
     
    def maFonction(p):
         print (p)
     
    v = 123
    mabarre.add_command(label='truc cool', command=Command(maFonction, v))
    Ce sont différentes façons pour construire une fonction a partir d'une autre fonction. On stocke les valeurs des paramètres passes dans une boite, et on les ressort pour les passer a la fonction intéressante le moment venu.

    Vous devrez apprendre a utiliser ces différents emballages.
    Pour l'instant, utilisez celui qui vous parait le plus compréhensible: l'important est de comprendre ce que vous faites.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 12
    Par défaut
    Ah merci! J'avais un bout de réponse alors, il me manquais juste le Lambda. merci beaucoup, ça va me simplifier la vie!

Discussions similaires

  1. Questions sur le module CSV
    Par Bogey Jammer dans le forum Général Python
    Réponses: 1
    Dernier message: 03/09/2007, 11h57
  2. Questions de newbie : modules VB
    Par CWagon dans le forum ASP.NET
    Réponses: 4
    Dernier message: 16/08/2007, 19h51
  3. Question liée à memset
    Par progfou dans le forum C++
    Réponses: 28
    Dernier message: 21/06/2007, 18h39
  4. Petite question liée aux structures
    Par progfou dans le forum C++
    Réponses: 9
    Dernier message: 24/04/2007, 13h46
  5. Petite question liée au Javascript
    Par systemofaxav dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 26/03/2006, 14h29

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