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 avec un Entry tkinter [Python 3.X]


Sujet :

Tkinter Python

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut probleme avec un Entry tkinter
    Bonjour
    Pour le lycée j'ais un programme en python avec tkinter et je rencontre un problème: message d'ereur :
    reponse = saisi.get()
    NameError: name 'saisi' is not defined

    Pourquoi je ne peux pas récupérer l'Entry comme ça ?

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    from tkinter import *
    def sommaire():
        Bsommaire.forget()
        Bcreer.forget()
        Bquitter.forget()
     
     
    def suivant():
        reponse = saisi.get()
        print(reponse)
     
     
    def creer():
     
        Bsommaire.forget()
        Bcreer.forget()
        Bquitter.forget()
     
        etape = 1
     
        fen.geometry("1000x500")#géométrie de la fenetre
     
        cadreBienv = Frame(fen,bg = "#d0d0ff", relief = GROOVE,border = 10)#cadre ou ya le bienvenue 
        cadreBienv.pack(fill = X)
        Lbienv = Label(cadreBienv, text="Bienvenue dans le createur de recette : etape %s/6 "%etape ,bg = "#d0d0ff",font = "Arial 20 italic")
        Lbienv.pack(expand = TRUE,fill = X)#texte bienvenu + etape/5
     
        cadreDemande = Frame(fen,bg = "gray75", relief = GROOVE,border = 10)#cadre ou on demande des info
        cadreDemande.pack(expand = TRUE,fill = BOTH)
     
        ask = "Quel type de recette allez vous faire ? (entrée / plat / dessert)"
     
        question = Label(cadreDemande,text = ask, bg = "gray75")
        question.pack(side = LEFT)#question
     
        saisi = Entry(cadreDemande)
        saisi.pack(side = LEFT)#champ de saisi
        saisi.focus()
     
        Bsuivant = Button(cadreDemande,text = "Suivant",command = suivant)
        Bsuivant.pack(side = RIGHT)#bouton suivant
     
     
     
     
    #principale
     
    fen = Tk()    
    fen.title("Menu recette store")
     
     
    Bsommaire = Button(fen, text = "Sommaire ", bg = "green", font ="Arial 40 italic",relief = RIDGE ,borderwidth = 10, command = sommaire)
    Bsommaire.pack(expand = TRUE,fill = BOTH)#bouton pour sommaire
     
    Bcreer = Button(fen, text = "Créer une recette ", bg = "green", font ="Arial 40 italic",relief = RIDGE ,borderwidth = 10, command = creer)
    Bcreer.pack(expand = TRUE,fill = BOTH)   #bouton pour creer recette
     
    Bquitter = Button(fen, text = "Quitter", bg = "red", font ="Arial 40 italic",relief = RIDGE ,borderwidth = 10, command = fen.destroy)
    Bquitter.pack(expand = TRUE,fill = BOTH)   #bouton pour quitter le programme
     
    fen.mainloop()
    #principale

  2. #2
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par chepaa Voir le message
    Bonjour
    Pour le lycée j'ais un programme en python avec tkinter et je rencontre un problème: message d'ereur :
    reponse = saisi.get()
    NameError: name 'saisi' is not defined

    Pourquoi je ne peux pas récupérer l'Entry comme ça ?

    from tkinter import *
    def sommaire():
    Bsommaire.forget()
    Bcreer.forget()
    Bquitter.forget()


    def suivant():
    reponse = saisi.get()
    print(reponse)


    def creer():

    Bsommaire.forget()
    Bcreer.forget()
    Bquitter.forget()

    etape = 1

    fen.geometry("1000x500")#géométrie de la fenetre

    cadreBienv = Frame(fen,bg = "#d0d0ff", relief = GROOVE,border = 10)#cadre ou ya le bienvenue
    cadreBienv.pack(fill = X)
    Lbienv = Label(cadreBienv, text="Bienvenue dans le createur de recette : etape %s/6 "%etape ,bg = "#d0d0ff",font = "Arial 20 italic")
    Lbienv.pack(expand = TRUE,fill = X)#texte bienvenu + etape/5

    cadreDemande = Frame(fen,bg = "gray75", relief = GROOVE,border = 10)#cadre ou on demande des info
    cadreDemande.pack(expand = TRUE,fill = BOTH)

    ask = "Quel type de recette allez vous faire ? (entrée / plat / dessert)"

    question = Label(cadreDemande,text = ask, bg = "gray75")
    question.pack(side = LEFT)#question

    saisi = Entry(cadreDemande)
    saisi.pack(side = LEFT)#champ de saisi
    saisi.focus()

    Bsuivant = Button(cadreDemande,text = "Suivant",command = suivant)
    Bsuivant.pack(side = RIGHT)#bouton suivant




    #principale

    fen = Tk()
    fen.title("Menu recette store")


    Bsommaire = Button(fen, text = "Sommaire ", bg = "green", font ="Arial 40 italic",relief = RIDGE ,borderwidth = 10, command = sommaire)
    Bsommaire.pack(expand = TRUE,fill = BOTH)#bouton pour sommaire

    Bcreer = Button(fen, text = "Créer une recette ", bg = "green", font ="Arial 40 italic",relief = RIDGE ,borderwidth = 10, command = creer)
    Bcreer.pack(expand = TRUE,fill = BOTH) #bouton pour creer recette

    Bquitter = Button(fen, text = "Quitter", bg = "red", font ="Arial 40 italic",relief = RIDGE ,borderwidth = 10, command = fen.destroy)
    Bquitter.pack(expand = TRUE,fill = BOTH) #bouton pour quitter le programme

    fen.mainloop()
    #principale
    Bonjour,

    Commencez par là :

    Nom : a-lire-avant-de-poster.png
Affichages : 255
Taille : 53,1 Ko

    Pour insérer du code dans un message :

    Nom : animation-balises-code.gif
Affichages : 283
Taille : 25,8 Ko



    @+.

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

    J'ai édité votre message pour y ajouter les balises CODE. Votre code Python est illisible sinon.
    note: les autres peuvent ajouter la balise CODE dans le texte récupéré dans "répondre avec citation".

    Le message d'erreur:
    reponse = saisi.get()
    NameError: name 'saisi' is not defined

    se produit (peut être) à l'exécution de:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def suivant():
        reponse = saisi.get()
        print(reponse)
    il signale que la variable globale "saisi" n'est pas définie.

    Il faut regarder là ou vous définissez "saisi": à priori dans "créer"...
    Et ajouter:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    def creer():
         global saisi
         ...
         saisi = ...
    Essayer de relire un peu ce que raconte le Swinnen sur les variables locales/globales.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

  4. #4
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par wiztricks Voir le message
    note: les autres peuvent ajouter la balise CODE dans le texte récupéré dans "répondre avec citation".
    Absolument. Mais est-ce qu'on rend réellement service à la personne en la confortant dans ses erreurs ?

    Pour ma part, je préfère (encore et toujours) battre le rappel des règles du forum aux nouveaux arrivants.

    Les mauvaises habitudes sont toujours plus faciles à prendre que les bonnes.

    @+.

  5. #5
    Membre du Club
    Homme Profil pro
    Lycéen
    Inscrit en
    Août 2014
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 27
    Localisation : Nouvelle-Calédonie

    Informations professionnelles :
    Activité : Lycéen

    Informations forums :
    Inscription : Août 2014
    Messages : 6
    Par défaut
    Merci wiztricks ça marche avec une variable global .

    Une dernière chose : pourquoi sa ne me pose pas de problème de récupérer les autres boutons dans la fonction créer sans les avoir déclarés global :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def creer():
     
        Bsommaire.forget()
        Bcreer.forget()
        Bquitter.forget()
    Ps : Je ferais attention la prochaine fois tarball69 ^^

  6. #6
    Expert éminent
    Homme Profil pro
    Architecte technique retraité
    Inscrit en
    Juin 2008
    Messages
    21 736
    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 736
    Par défaut
    Citation Envoyé par chepaa Voir le message
    Une dernière chose : pourquoi sa ne me pose pas de problème de récupérer les autres boutons dans la fonction créer sans les avoir déclarés global
    Dans une fonction, global n'est nécessaire que pour modifier/créer la variable.
    Ici:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    def creer():
     
        Bsommaire.forget()
        Bcreer.forget()
        Bquitter.forget()
    Bsommaire existe et on applique une méthode (.forget) qui ira modifier l'objet associé.
    Ce qui est différent d'écrire:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    def creer():
     
        Bsommaire = ...
    Sans le "global", à la sortie de la fonction, la variable Bsommaire n'existera plus.

    - W
    Architectures post-modernes.
    Python sur DVP c'est aussi des FAQs, des cours et tutoriels

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

Discussions similaires

  1. Réponses: 0
    Dernier message: 28/10/2013, 15h22
  2. Réflexion sur la création d'un tableau en Tkinter avec des Entry
    Par calogerogigante dans le forum Tkinter
    Réponses: 5
    Dernier message: 23/01/2010, 17h35
  3. Probleme avec un print dans Tkinter
    Par Patatarte dans le forum Tkinter
    Réponses: 2
    Dernier message: 21/11/2009, 11h51
  4. probleme avec Reverse DNS entries?
    Par soufiane2102 dans le forum Applications
    Réponses: 8
    Dernier message: 26/12/2008, 12h54
  5. probleme avec <a href=Entry?action=
    Par Asmod_D dans le forum Servlets/JSP
    Réponses: 2
    Dernier message: 29/06/2007, 21h25

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