Récupérer valeur Entry

tatal21820 Messages postés 37 Statut Membre -  
tatal21820 Messages postés 37 Statut Membre -
Bonjour, à tous

Je n arrive pas à récupérer la valeur de mon
tk.Entry
pour afficher une date selon l'année saisie.

Un petit coup de main s'il vous plaît, merci

# -*- coding: utf-8 -*-
"""@author: ****"""
import datetime
from tkinter import *
from time import strftime
import locale
import locale

locale.setlocale(locale.LC_ALL, 'fr_FR')

master = Tk()

annee = champNom.get()

master.title("Tableau de bord")  # Nom de la fenêtre
master.geometry("600x200")  # Dimentions de la fenêtre


def createWin4():
    win4 = Toplevel(master)
    win4.title("Selection Année")

    win4.geometry("150x100")
    win4.iconbitmap("gdata_icon.ico")
    win4.config(background='#5D6D7E')

    def action():
        lblResultat['text'] = champNom.get()

    ok = Button(win4, text="Valide", command=action)

    btn_quit = Button(win4, text="Quitter", command=win4.destroy)
    btn_quit.place(x=80, y=70)
    lbl_ent_an = Label(win4, text="Entrer Année", font='Arial 15', fg='WHITE', bg='#5D6D7E')
    lbl_ent_an.place(x=10, y=0)
    champNom = Entry(win4)
    lblResultat = Label(master, text="", font='Arial 35', relief=FLAT)
    champNom.place(x=10, y=40)
    lblResultat.place(x=300, y=25)
    ok.place(x=15, y=70)


btn_select_annee = Button(master, text="Année :", command=createWin4, font='Arial 30', relief=RAISED)
btn_select_annee.place(x=100, y=20)
j_1 = datetime.datetime(annee, 1, 1).strftime('%A %d %B')  # Jour de l'an
lbl1 = Label(master, text=j_1, font='Arial 20')
lbl1.place(x=50, y=150)

master.mainloop()

3 réponses

  1. mamiemando Messages postés 33228 Date d'inscription   Statut Modérateur Dernière intervention   7 940
     
    Bonjour,

    Ligne 13 : tu essayes de récupérer la valeur de
    champNom
    qui n'est pas encore déclarée à ce stade. Et cette variable est locale à la fonction
    createWin4
    , donc aucune chance qu'elle soit visible à l'extérieure de cette fonction.

    Ensuite il faut spécifier sur quel événement (par exemple, lorsque tu cliques sur un bouton donné) tu vas récupérer la valeur de ce champ, et faire la récupération dans la callback associée à cet événement. Typiquement, les
    tk.Button
    exposent via le paramètre
    command
    une callback déclenchée lorsqu'on clique dessus. Il faut t'assurer que
    champNom
    est défini à l'endroit où tu déclares ladite callback.

    Le problème, c'est que dans ton code, le champ n'apparaît que quand tu cliques sur
    btn_select_annee
    . Deux solutions :
    • soit tu crées tous les widgets de ta fenêtre dès le début (quitte à les masquer démasquer) ;
    • soit tu prévois une classe qui enveloppe toute ta fenêtre et dans laquelle tu garderas un pointeur vers chaque widget (notamment
      self.champNom
      ).


    Bonne chance
    0
  2. tatal21820 Messages postés 37 Statut Membre
     
    Un grand merci à toi, je vais voir ça.
    0