Récupérer valeur Entry

Fermé
tatal21820 Messages postés 35 Date d'inscription vendredi 6 mai 2022 Statut Membre Dernière intervention 2 septembre 2023 - Modifié le 10 mai 2022 à 17:47
tatal21820 Messages postés 35 Date d'inscription vendredi 6 mai 2022 Statut Membre Dernière intervention 2 septembre 2023 - 11 mai 2022 à 13:23
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 1883 Date d'inscription lundi 23 mars 2020 Statut Membre Dernière intervention 28 février 2024 178
9 mai 2022 à 17:22
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 33093 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 4 mai 2024 7 751
Modifié le 10 mai 2022 à 17:54
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 vendredi 6 mai 2022 Statut Membre Dernière intervention 2 septembre 2023
Modifié le 12 mai 2022 à 11:14
Un grand merci à toi, je vais voir ça.
0