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 -
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.
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:
- Tkinter entry to variable
- Qwerty to azerty - Guide
- Video to video - Télécharger - Conversion & Codecs
- Majuscule to minuscule - Guide
- Impossible de créer le fichier de travail. vérifiez la variable d'environnement temp ✓ - Forum Word
- Bat to exe - Télécharger - Édition & Programmation
4 réponses
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.
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.
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.
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.
Bonjour,
ou bien comme ceci:
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)
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".
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)
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 ?
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 ?
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é
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é
Simplement en faisant un
Code sans fonction de vérification, réduit au plus simple.
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())