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 :

bind et return dans un classe


Sujet :

Tkinter Python

  1. #1
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut bind et return dans un classe
    salut,
    je suis en train d'apprendre python grace à l'excellent tutoriel de Gérard Swinnen (merci ).
    Cependant je bute à l'exercie 13.4.
    Il s'agit de déclencher l'exécution d'une méthode en appuyant sur la touche entrée.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
    def __init__(self):
    ...
            self.entree = Entry(self.root, width =14)
            self.entree.bind("<Return>",self.changeCouleurs)
    ceci me provoque le message suivant :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    TypeError: changeCouleurs() takes exactly 1 argument (2 given)
    quel est donc l'argument en trop que je passe à la fonction?

  2. #2
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    bon en continuant en à chercher sur le net, j'ai trouvé qu'une méthode passe automatiquement l'argument 'self'. Donc c'est normal que j'ai un message d'erreur me disant qu'il y a deux arguments.

    si j'enlève le self avant le nom de la méthode, ça marche pas. Bon logique...

    si je mets le nom de la classe :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    self.entree.bind("<Return>",Application.changeCouleurs)
    j'ai encore un message :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    unbound method changeCouleurs() must be called with Application instance as first argument (got Event instance instead)

  3. #3
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    J'ai fait un truc qui marche, mais est ce la bonne méthode???

    Compte tenu du premier message, j'ai rajouté un second argument dans la méthode. Ce qui donne.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    def changeCouleurs(self,event):
    au lieu de :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
    def changeCouleurs(self):

  4. #4
    Membre averti Avatar de zabibof
    Inscrit en
    Février 2007
    Messages
    188
    Détails du profil
    Informations forums :
    Inscription : Février 2007
    Messages : 188
    Points : 344
    Points
    344
    Par défaut
    Citation Envoyé par julien.63
    J'ai fait un truc qui marche, mais est ce la bonne méthode???
    [CODE]
    def changeCouleurs(self,event):

    C'est bien la bonne méthode car une fonction lié à un gestionnaire d'évenement doit avoir en argument event.

  5. #5
    Membre expérimenté Avatar de julien.63
    Profil pro
    balayeur
    Inscrit en
    Décembre 2005
    Messages
    1 348
    Détails du profil
    Informations personnelles :
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : balayeur

    Informations forums :
    Inscription : Décembre 2005
    Messages : 1 348
    Points : 1 311
    Points
    1 311
    Par défaut
    merci pour ta confirmation

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

Discussions similaires

  1. Générer (en code JAVA) la méthode equals dans les classes bindées par JAXB2
    Par greatmaster1971 dans le forum Format d'échange (XML, JSON...)
    Réponses: 0
    Dernier message: 11/12/2013, 17h55
  2. Réponses: 3
    Dernier message: 24/02/2011, 15h46
  3. Réponses: 8
    Dernier message: 10/07/2005, 00h10
  4. Thread dans une classe ?
    Par Sephi dans le forum Threads & Processus
    Réponses: 7
    Dernier message: 07/03/2004, 19h16
  5. Fonction callback dans une classe
    Par julian_ross dans le forum MFC
    Réponses: 8
    Dernier message: 02/03/2004, 12h42

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