Récupérer valeur Entry

tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -  
tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   -
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

Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

on y verrait plus clair si tu affichais ton code avec les balises de code
mode d'emploi:
https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code

Visuellement, ça doit ressembler à ça:

for k in range(10):
    print(k)
0
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
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
tatal21820 Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 
Un grand merci à toi, je vais voir ça.
0