Récupérer du texte à partir d'un champ de saisie sur tkinter
Résolu/Fermé
manyonne
Messages postés
4
Date d'inscription
dimanche 3 octobre 2021
Statut
Membre
Dernière intervention
5 janvier 2022
-
Modifié le 13 janv. 2022 à 17:43
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 13 janv. 2022 à 17:57
mamiemando Messages postés 33407 Date d'inscription jeudi 12 mai 2005 Statut Modérateur Dernière intervention 29 novembre 2024 - 13 janv. 2022 à 17:57
A voir également:
- Récupérer du texte à partir d'un champ de saisie sur tkinter
- Comment recuperer un message supprimé sur whatsapp - Guide
- Recuperer video youtube - Guide
- Comment récupérer un compte facebook piraté - Guide
- Impossible de récupérer mon compte gmail - Guide
- Formule excel si contient texte alors texte ✓ - Forum Excel
1 réponse
mamiemando
Messages postés
33407
Date d'inscription
jeudi 12 mai 2005
Statut
Modérateur
Dernière intervention
29 novembre 2024
7 806
Modifié le 13 janv. 2022 à 18:00
Modifié le 13 janv. 2022 à 18:00
Bonjour,
Merci de copier coller ton texte en le mettant en forme avec les balises de code plutôt que d'utiliser une capture d'écran, ce sera plus pratique pour tout le monde et plus écologique.
Explication rapide
Tu confonds dans ton code deux étapes :
Explication détaillée
Généralement, on aura effectivement à faire une classe pour une fenêtre, et cet objet contient les éléments contenus dans cette fenêtre, mais ça n'est pas obligatoire.
L'exemple "calculator" proposé dans ce lien montre comment faire :
Que fait ce programme ?
Note que toutes ces variables sont déclarées en dehors d'une classe, ce qui montre bien que ça n'est pas indispensable (même si je ne vois pas trop pourquoi tu ne pourrais pas utiliser une classe dans ton cas, mais peu importe).
Tu vois donc que la déclaration de la fenêtre à proprement parler (le programme principal) et le traitement qui est fait (la callback
Bonne chance
Merci de copier coller ton texte en le mettant en forme avec les balises de code plutôt que d'utiliser une capture d'écran, ce sera plus pratique pour tout le monde et plus écologique.
Explication rapide
Tu confonds dans ton code deux étapes :
- celle où tu places les éléments dans ta fenêtre (par exemple, les champs texte, les boutons...)
- et celle où tu traites les données saisies (suite à un événement, par exemple, quand tu cliques sur un bouton ou quand tu appuies sur une touche de clavier).
Explication détaillée
Généralement, on aura effectivement à faire une classe pour une fenêtre, et cet objet contient les éléments contenus dans cette fenêtre, mais ça n'est pas obligatoire.
L'exemple "calculator" proposé dans ce lien montre comment faire :
#!/usr/bin/env python3 import tkinter as tk from math import * def evaluate(event): res.configure(text = "Result: " + str(eval(entry.get()))) w = tk.Tk() tk.Label(w, text="Your Expression:").pack() entry = tk.Entry(w) entry.bind("<Return>", evaluate) entry.pack() res = tk.Label(w) res.pack() w.mainloop()
Que fait ce programme ?
- On commence par créer une fenêtre
w
, dans laquelle on installe un texte (tk.Label
) et un champ (tk.Entry
) pour saisir une valeur. - Ensuite, à l'aide de la méthode
bind
, on indique que la fonctionevaluate
doit être appelée à chaque fois que l'utilisateur appuie sur la touche Entrée. - Puis on crée dans
w
un champ texteres
dont le contenu sera corrigé par la fonctionevaluate
. La fonctionevaluate
est appelée callback, car elle est passée en paramètre d'une autre fonction (en l'occurrence,bind
). - Enfin, Une fois que le comportement complet de la fenêtre est spécifié, on lance le programme a proprement parler avec
w.mainloop()
.
Note que toutes ces variables sont déclarées en dehors d'une classe, ce qui montre bien que ça n'est pas indispensable (même si je ne vois pas trop pourquoi tu ne pourrais pas utiliser une classe dans ton cas, mais peu importe).
Tu vois donc que la déclaration de la fenêtre à proprement parler (le programme principal) et le traitement qui est fait (la callback
evaluate) sont donc séparés. Cette distinction est incontournable, et comme elle n'est pas faite dans le bout de code que tu as partagé, c'est pour cela que ce dernier ne marche pas.
Bonne chance