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 :

Passer des arguments [Python 2.X]


Sujet :

Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Femme Profil pro
    prof d'histoire ?!?
    Inscrit en
    Février 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : prof d'histoire ?!?

    Informations forums :
    Inscription : Février 2015
    Messages : 22
    Par défaut Passer des arguments
    Bonjour à tous,

    J'apprends par moi-même le python avec des petits programmes. Je suis bloqué avec celui ci.

    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
     
    # -*- coding: utf-8 -*-
    from Tkinter import *
     
    mots = ["premier", "deuxieme", "troisieme"]
     
    fenetre = Tk()
     
    def callback(cmot):
        print cmot
     
    for w in mots:
        b = Button(fenetre, text=w, command=callback(w))
        b.pack()
     
     
    fenetre.mainloop()
    j'aimerais que lorsque l'on clique sur le un bouton et seulement à ce moment le mot s'affiche en console.
    Une idée ??? merci

  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,

    Dans votre histoire, il faut réaliser une association entre un mot et la fonction appelée lorsqu'on clique sur le Button ou associer le mot au Bouton.
    Une des façons élémentaires pour réaliser cette association est de créer ce qu'on appelle "closure":
    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
    >>> import tkinter as tk
    >>> btn = tk.Button(text='zzz')
    >>> def callback(mot):
    ...     print (mot)
    ...
    >>> def callback(mot):
    ...     def _doit_():
    ...         print (mot)
    ...     return _doit_
    ...
    >>> btn['command'] = callback('zzz')
    >>> btn.invoke()
    zzz
    'None'
    >>>
    Dans ce cas, callback('zzz') retourne une fonction imbriquée dans le contexte de "callback" auquel mot est "zzz".
    Une façon plus Pythonique dans ce cas sera de passer par "lambda"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    >>> def callback(mot): print(mot)
    ...
    >>> btn['command'] = lambda mot='zzz': callback(mot)
    >>> btn.invoke()
    zzz
    'None'
    >>>
    Techniquement, ça fait la même chose sauf qu'on a fixé la valeur de la variable dans les paramètres par défaut.
    L'autre façon sera de créer une s/classe de Button pour y associer le mot:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    >>> class MyButton(tk.Button):
    ...     def __init__(self, mot):
    ...         self.mot = mot
    ...         super().__init__(text=mot, command=self.command)
    ...     def command(self):
    ...         print(self.mot)
    ...
    >>> btn = MyButton('yyy')
    >>> btn.invoke()
    yyy
    'None'
    note: si vous utilisez encore Python2, certaines lignes de code ne fonctionneront pas... Mais si vous avez compris le principe, c'est pas si grave.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre averti
    Femme Profil pro
    prof d'histoire ?!?
    Inscrit en
    Février 2015
    Messages
    22
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 31
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : prof d'histoire ?!?

    Informations forums :
    Inscription : Février 2015
    Messages : 22
    Par défaut
    Réponse rapide et comprehensible, merci wiztricks

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

Discussions similaires

  1. passer des arguments accentues a perl (sous windows)
    Par newnew dans le forum Langage
    Réponses: 6
    Dernier message: 14/09/2006, 12h12
  2. Réponses: 3
    Dernier message: 06/07/2006, 10h41
  3. Passer des arguments au binaire/exécutable
    Par Ljungberg dans le forum Autres éditeurs
    Réponses: 1
    Dernier message: 03/02/2006, 10h37
  4. Réponses: 6
    Dernier message: 21/12/2005, 18h52
  5. Comment passer des argument a un script php ?
    Par Florina dans le forum Linux
    Réponses: 2
    Dernier message: 11/12/2005, 14h38

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