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

EDI/RAD Python Discussion :

Récupérer l'objet appelant


Sujet :

EDI/RAD Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 123
    Par défaut Récupérer l'objet appelant
    Bonjour,

    J'ai 2 boutons, et je voudrais que quand on clique dessus, ça affiche le texte, puis qu'ils disparaissent. J'ai fait ceci :
    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
     
    from Tkinter import *
    import random as alea
     
    fen = Tk()
     
    def clic1():
        print B1.cget("text")
        B1.place_forget()
     
    def clic2():
        print B2.cget("text")
        B2.place_forget()
     
     
    B1=Button(fen,text='BT1',width=4,command=clic1)
    B1.place(x=8,y=8)
    B2=Button(fen,text='BT2',width=4,command=clic2)
    B2.place(x=48,y=8)
     
    fen.mainloop()
    ça fonctionne, mais j'aimerai automatiser cela, avec la commande lambda, j'y arrive en créant une fonction clic(n), mais ensuite, je dois faire :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    def clic(n):
        print eval("B"+str(n)+".cget('text')")
        eval("B"+str(n)+".place_forget()")
    Ce qui est je trouve assez moche. Y-a-t-il un moyen de récupérer l'objet qui appelle la fonction clic ( comme Sender en Delphi).

    Merci
    Vincent

  2. #2
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,

    Je dirais décomposer ou sous-classer:

    decomposer.
    Les lambda permettent de créer des fonctions dont le paramètre sera l'instance de bouton plutôt que son numéro. Mais il faut décomposer création du bouton et déclaration de la commande

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    def click(button):
         ...
     
    ...
    B1= Button(fen,text='BT1',width=4)
    B1['command'] = lambda: click(B1)
    ...
    Pour ce qui est de sous-classer, c'est juste un enrobage de ce qui précède.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  3. #3
    Membre Expert 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
    Par défaut
    Bonjour,

    Désolé wiztricks mais bien que votre réponse soit la bonne je ne peux en cette période de fête me retenir...

    Citation Envoyé par magicvinni Voir le message
    ça fonctionne, mais j'aimerai automatiser cela, avec la commande lambda
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    from Tkinter import *
     
    fen = Tk()
     
    for v in ['BT%d'%index for index in range(1, 10)]:
        (lambda w=Button(fen, text=v): w.pack() or w.config(command=w.pack_forget))()  
     
    fen.mainloop()
    Bon, ok... --->[] et bonnes fêtes.

  4. #4
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 790
    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 790
    Par défaut
    Salut,
    Citation Envoyé par PauseKawa Voir le message
    Désolé wiztricks mais bien que votre réponse soit la bonne je ne peux en cette période de fête me retenir...
    ....
    bonnes fêtes.
    Bonnes fêtes à toi aussi.
    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Avril 2010
    Messages
    123
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2010
    Messages : 123
    Par défaut
    Super merci pour vos réponses, ça fonctionne parfaitement ! Heu.... bonnes fêtes à vous aussi... Je n'avais pas reçu de notification de vos messages !

    Vincent

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

Discussions similaires

  1. [JComboBox] Récupérer l'objet sélectionné
    Par Terminator dans le forum Composants
    Réponses: 3
    Dernier message: 14/09/2005, 13h29
  2. Récupérer un objet d'une liste déroulante
    Par Hell dans le forum C++Builder
    Réponses: 2
    Dernier message: 07/01/2005, 15h59
  3. [servlet][bean]comment récupérer l'objet request
    Par otminou dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 27/09/2004, 15h40
  4. Réponses: 4
    Dernier message: 15/09/2004, 17h52
  5. base de données objet appelée ozone
    Par enti dans le forum Autres SGBD
    Réponses: 3
    Dernier message: 01/03/2004, 09h28

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