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 :

Probleme d'appel de méthodes


Sujet :

Tkinter Python

  1. #1
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 43
    Par défaut Probleme d'appel de méthodes
    Bonjour,

    je suis actuellement en train de faire un programme, dans lequel je rentre des données afin de pouvoir avoir des informations sur mes données. Je souhaiterais tout d'abord afficher les données saisies, mais il me met un problème :"ent1 is not defined". Mon problème vient surement du fait qu'il faut appeler ces méthodes différemment ou quelque chose dans le genre, mais je ne vois pas du tout comment !! Merci de bien vouloir m'expliquer et joyeuses fêtes !!

    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
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    from Tkinter import *
     
    def affiche():
     
    	liste=ent1.get()
    	label4= Label(fen,text=liste)
    	label4.pack()
     
    def entrer():
     
        for w in fen.winfo_children():
            w.destroy()
        fen.pack_propagate(0)
        lab3 = Label(fen, fg='black', text= "Saisie des donnees\n\n", font=("arial", 12, "bold italic"))
        lab3.pack(side=TOP)
        lb1= Label(fen, text= "Entrez vos donnees:")
        lb1.pack()
        ent1=Entry(fen, width= 5)
        ent1.pack()
        bouton=Button(fen, text= "affiche",command=affiche)
        bouton.place(x=175,y=150)    
        #~ bouton= Button(fen, text= "afficher",command=affiche_verif)
        #~ bouton.place(x=175,y=250)    
        bouton= Button(fen, text= "Quitter", command=fen.quit )
        bouton.place(x=180,y=350)
        fen.mainloop()
     
    fen= Tk()
    fen.title('Logiciel de saisie de donnees')    
    lab2 = Label(fen,width=10,height=5, fg='red', text= "Bienvenue", font=("arial", 50, "bold italic"))
    lab2.pack(side=TOP)
     
    bouton= Button(fen, text= "Quitter", command=fen.quit )
    bouton.pack(side=RIGHT)
     
    bouton2= Button(fen, text= "Entrer", command=entrer)
    bouton2.pack(side=LEFT)
     
    fen.mainloop()

  2. #2
    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,

    Deux solutions :

    La 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
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
     
    from Tkinter import *
     
    def entrer():
        def affiche():
    	liste=ent1.get()
    	label4= Label(fen,text=liste)
    	label4.pack()
     
        for w in fen.winfo_children():
            w.destroy()
        fen.pack_propagate(0)
        lab3 = Label(fen, fg='black', text= "Saisie des donnees\n\n", font=("arial", 12, "bold italic"))
        lab3.pack(side=TOP)
        lb1= Label(fen, text= "Entrez vos donnees:")
        lb1.pack()
        ent1=Entry(fen, width= 5)
        ent1.pack()
        bouton=Button(fen, text= "affiche",command=affiche)
        bouton.place(x=175,y=150)    
        #~ bouton= Button(fen, text= "afficher",command=affiche_verif)
        #~ bouton.place(x=175,y=250)    
        bouton= Button(fen, text= "Quitter", command=fen.quit )
        bouton.place(x=180,y=350)
        fen.mainloop()
     
    fen= Tk()
    fen.title('Logiciel de saisie de donnees')    
    lab2 = Label(fen,width=10,height=5, fg='red', text= "Bienvenue", font=("arial", 50, "bold italic"))
    lab2.pack(side=TOP)
     
    bouton= Button(fen, text= "Quitter", command=fen.quit )
    bouton.pack(side=RIGHT)
     
    bouton2= Button(fen, text= "Entrer", command=entrer)
    bouton2.pack(side=LEFT)
     
    fen.mainloop()
    ou self.

    C'est juste un problème d'héritage. entrer() et affiche() héritent de fen mais pas entre eux.
    Dans la closure affiche() hérite de entrer().
    Avec self tu garde la référence.

    @+

  3. #3
    Membre averti
    Inscrit en
    Novembre 2007
    Messages
    43
    Détails du profil
    Informations forums :
    Inscription : Novembre 2007
    Messages : 43
    Par défaut
    ah ok d'accord... je te remercie beaucoup !!

  4. #4
    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,

    Pour ne pas rester sur une semi vérité:

    A vrais dire pour ton code il existe plus de deux solutions que je n'ai pas aborder car ce n'étais pas la question.

    Par exemple le stockage dans une classe:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    class Mes_Globals():
        ent1 = None
     
    def affiche():
        liste=Mes_Globals.ent1.get()
     
    def entrer():
        ...
        Mes_Globals.ent1=Entry(fen, width= 5)
    Vu ton code ce n'est pas glorieux je trouve.

    globals : Pour moi c'est une 'facilitée' et la porte ouverte à toutes les fenêtres si tu ne suit pas bien tes variables.

    etc...

    Python c'est souple

    @+

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

Discussions similaires

  1. Probleme lors de l'appel à une méthode
    Par doditch77 dans le forum C++
    Réponses: 10
    Dernier message: 07/01/2008, 00h58
  2. Réponses: 2
    Dernier message: 28/02/2007, 19h54
  3. Réponses: 8
    Dernier message: 13/08/2004, 12h32
  4. [Reflection] Probleme d'appel newInstance()
    Par SEMPERE Benjamin dans le forum API standards et tierces
    Réponses: 2
    Dernier message: 17/06/2004, 13h15
  5. [Débutant] Héritage & appel de méthodes
    Par KooX dans le forum Langage
    Réponses: 4
    Dernier message: 11/05/2004, 23h37

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