Python Forum

Full Version: how to get the entry information using Entry.get() ?
You're currently viewing a stripped down version of our content. View the full version with proper formatting.
Hello, I have a problem. I would like to retrieve the information in my Entry to put in list_info. thank you in advance.
from tkinter import *

# reglages
width = 800
height = 600
couleur = (48, 47, 47)
couleurmes = (113, 113, 113)


class Appli():
    def __init__(self):
        self.fenetre = Tk()
        self.fenetre.geometry("1000x600")
        self.fenetre.title('Appli')
        self.fenetre.configure(background="#cecece")
        self.fenetre.configure(highlightbackground="#cecece")
        self.fenetre.configure(borderwidth="1")
        self.fenetre.configure(relief="sunken")
        self.fenetre.attributes('-alpha', 0.98)
        self.objet()


    liste_Info = []


    def objet(self):

        self.listeF = ['NOM :', 'PRENOM :', 'ADRESSE :', 'N° TELE :', 'MAIL :' ]
        self.liste_Info = []


        R_span = 2
        R_pady = 70

        # graphique creation

        for x in self.listeF:

            global  entree

            x = Label(self.fenetre, text=x, bg='#cecece', fg='black')
            x.grid(row=1, column=2, rowspan =  R_span, pady = R_pady, sticky = W)
            x = Entry(self.fenetre, bg='black', fg='white')
            x.grid(row=1, column=3, rowspan=R_span, pady=R_pady, sticky = NW)

            print(x)
            entree = x.get()
            R_span += 1
            R_pady +=50


        self.lab_mes = Label(self.fenetre, text='MESSAGE : ', bg='#cecece', fg='black')
        self.lab_mes.grid(row=1, column=4, padx=40, rowspan = 2, sticky = W)


        self.MES = Entry(self.fenetre, bg='black', fg='white')
        self.MES.grid(row=2, column=4, padx=40, rowspan=2, ipady = 40, sticky = W)


        self.bouton = Button(self.fenetre, text='Valider', command=self.Entree_Get())
        self.bouton.grid(row=4, column=4,padx=40,sticky = NE)


        self.canphoto = Canvas(self.fenetre, width=165, height=222, bg='dark grey')
        self.canphoto.grid(row=1, column=1, rowspan=4, padx=20, pady=70,sticky = W)

    def Entree_Get(self):
        self.liste_Info.append(entree)
        print(self.liste_Info)


application = Appli()
application.fenetre.mainloop()
Does Entry.get() not work? In this case, self.MES.get()
You have to keep a reference to each individual Entry, in this case x. Each pass through the for overlays the previous x, so it no longer exists. So, using a dictionary below, so you can store everything in one container

## NOT tested - don't have time
## post back if there are problems

        self.entry_dict={}
        for x in self.listeF:
 
            ##global  entree
 
            ## don't have to keep a reference to the Label
            ## since it isn't accessed anywhere else
            Label(self.fenetre, text=x, bg='#cecece',
                  fg='black').grid(row=1, column=2,
                  rowspan =  R_span, pady = R_pady, sticky = W)
            y = Entry(self.fenetre, bg='black', fg='white')
            y.grid(row=1, column=3, rowspan=R_span, pady=R_pady, sticky = NW)
            self.entry_dict[x]=y
        print("entry_dict", self.entry_dict) ## self.listeF item --> tkinter instance

    def Entree_Get(self):
        for x in self.listeF:  ## read the dict in this order
            print(x, self.entry_dict[x].get())