Récupérer un entry dans une variable

Résolu
Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   -  
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,
j'ai commencé à apprendre la programmation python il y a quelques semaines et pour que mais premiers programmes prennent formes je me suis intéressé au modul tkinter, mais voilà que je n'arrive pas à comprendre comment les valeurs écrites dans un widgets notamment un entry puissent être récupérer dans une variable et conservé comme tout autre contenue de variable.

Merci à ceux qui pourront me répondre cela me bloque dans mon apprentissage depuis plusieurs jours.
A voir également:

4 réponses

vortex
 
Bonsoir,

La valeur d'un widget Entry se récupère en utilisant une variable tkinter et en la passant à Entry via son paramètre textvariable.

Exemple basique avec un test pour valider une saisie en utilisant la mèthode trace de StringVar.

import tkinter as tk

def check_value(*args):
    # Une simple fonction pour l'exemple qui vérifie si la valeur est un nombre
    # et de longueur de moins de 11 caractères et qui l'écrit dans un label
    # Si saisie invalide, retour de la valuer de la variable à celle précédente.
    value = entry_value.get()
    if value.isdigit() and len(value) <= 10 or not value:
        label['text'] = value
    else:
        entry_value.set(label['text'])

win = tk.Tk()

frame = tk.Frame(win, bg='navy')
frame.grid()

entry_value = tk.StringVar()
entry_value.trace('w', check_value)

entry = tk.Entry(
    frame, textvariable=entry_value, width=30, bg='black', fg='white',
)
entry.grid(padx=25, pady=10)

label = tk.Label(frame, width=30, bg='green', fg='white')
label.grid(pady=(40, 10))

entry.focus_set()

win.mainloop()


Il existe aussi dans le widget Entry, les paramètres validate et validatecommand servant à vérifier et autoriser la saisie, sans doute un peu plus élaboré qu'en utilisant Var.trace.
1
Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup de ta réponse mais je n'arrive pas utiliser les widgets de ton programme.
0
Phil_1857 Messages postés 1872 Date d'inscription   Statut Membre Dernière intervention   168
 
Bonjour,

ou bien comme ceci:
def show_result(event):
    resultat = e2.get()

e2 = Entry(main_win)
e2.place(x = 10,y = 110)
e2.bind("<Return>", show_result)
0
Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Merci beaucoup cependant en utilisant ta méthode je n'arrive toujours pas à utiliser la valeur en entry comme une autre variable.
0
Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Désoler mais j'ai toujours du mal à le mettre en pratique

pour essayer de donner plus de précision sur mon problème voilà un petit programme que j'ai fait où j'aimerai récupérer la variable en entry pour la print et ainsi confirmer qu'elle est bien stocké dans une variable "standard".


from tkinter import *

result = ""

def recup(*args):
result = var_entry.get()
return result

window = Tk()
window.geometry("400x300")

var_entry = StringVar()
var_entry.trace("w",recup)

e = Entry(window, textvariable=var_entry)
e.pack()

window.mainloop()

print(result)

0
vortex
 
Bonjour,

Tout ce qui est après le mainloop ne sera exécuté que lorsque la fenêtre tkinter sera fermée.

De plus, pourquoi veux-tu stocker la valeur dans une autre variable ? Pour quoi faire ? Tu as accès à ce qu'elle vaut en utilisant la méthode get, tu peux l'afficher directement dans ta fonction recup.

Que souhaites-tu réaliser au juste avec cette entry dans ton script ?
0
Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
Pour le print après la fonction mainloop j’avais bien saisi qu’il fallait fermer la fenêtre pour qu’il s’exécute, cela avait pour but de vérifier si j’avais accès à la valeur du entry. Le programme quand à lui je le fait juste pour essayer de comprendre comment fonctionne le widgets entry.

Je ne vois pas comment utiliser la fonction .get() pour par exemple print la valeur, pourrait tu m’indiquer comment je doit écrire le script pour que la valeur en entry soit print dans la console une fois que la fenêtre est fermer.

Merci beaucoup de ta réactivité
0
vortex
 
Simplement en faisant un
print(entry_value.get())
.

Code sans fonction de vérification, réduit au plus simple.

import tkinter as tk

win = tk.Tk()

entry_value = tk.StringVar()

entry = tk.Entry(win, textvariable=entry_value, width=30, bg='black', fg='white',)
entry.grid(padx=25, pady=10)

entry.focus_set()

win.mainloop()

print(entry_value.get())
0
Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention   > vortex
 
Merci beaucoup, je pense bien que c'était la solution que je chercher pour manipuler les valeur d'un entry comme je le voulais.
0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > Komode Messages postés 9 Date d'inscription   Statut Membre Dernière intervention  
 
bonjour, peux-tu alors marquer la discussion comme résolue?
0