Salut à tous je débute en Python du moins avec Tkinter, j'aimerais savoir comment afficher du text que l'on saisis avec entry voici mon code, merci d'avance.
from Tkinter import *
windows = Tk()
windows.title("Logiciel entrainement")
def text_base():
champs = Label(windows, text="Welcome to my first logiciel")
champs.pack()
text_base()
def quit_logi():
button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
button_quit.pack()
quit_logi()
def entry():
var_texte = StringVar()
ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
ligne_texte.pack()
entry()
windows.mainloop()
N'oublie pas que tkinter est géré par les événements, donc si tu ne lie pas la mise à jour de ton affichage avec un événement, tu n'aura aucun changement.
N'oublie pas que tkinter est géré par les événements, donc si tu ne lie pas la mise à jour de ton affichage avec un événement, tu n'aura aucun changement.
Tu peux par exemple utiliser la méthode bind() sur ton instance ligne_texte, et créer une nouvelle fonction pour faire la MAJ:
#Le premier paramètre de la fonction doit nécessairement être lié à l'événement
#lorsqu'on utilise la méthode bind. Par convention, on lui donne le nom de
#'event', et n'a pas d'influence sur le reste du code.
def MAJ(event):
print var_texte.get()
#Ici, l'événement est lié à ton widget ligne_texte. Quand tu cliquera dessus
#avec la touche Entrée (qui a pour code <Return>, alors la fonction MAJ sera
#appelé
ligne_texte.bind("<Return>", MAJ)
Le problème est de tout mettre dans des fonctions. Ce n'est pas une bonne idée, car les variables sont créées à l'intérieur de celles-ci et certaines seront inaccessibles en dehors (voir espace des noms, scope, portée lexicale, variable mutable/immutable). Ne sachant pas vraiment ce que tu veux faire, je t'ai réécrit ton code à ma sauce:
from Tkinter import *
#La fonction qui va afficher la valeur de la variable
def MAJ(event):
print var_texte.get() #affiche le résultat dans la console
#La fenêtre principale
windows = Tk()
windows.title("Robot")
windows.geometry("400x300")
#La variable tkinter
var_texte = StringVar()
#Un label
champs = Label(windows, text="Parle a Robot")
champs.pack()
#Un autre label qui répète ce qui est écrit
champs_repete = Label(windows, textvariable=var_texte)
champs_repete.pack()
#Le widget de saisie de texte
ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
ligne_texte.bind("<Return>", MAJ)
ligne_texte.pack()
#Le bouton quitter
button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
button_quit.pack()
Le problème est de tout mettre dans des fonctions. Ce n'est pas une bonne idée, car les variables sont créées à l'intérieur de celles-ci et certaines seront inaccessibles en dehors (voir espace des noms, scope, portée lexicale, variable mutable/immutable). Ne sachant pas vraiment ce que tu veux faire, je t'ai réécrit ton code à ma sauce:
from Tkinter import *
#La fonction qui va afficher la valeur de la variable
def MAJ(event):
print var_texte.get() #affiche le résultat dans la console
#La fenêtre principale
windows = Tk()
windows.title("Robot")
windows.geometry("400x300")
#La variable tkinter
var_texte = StringVar()
#Un label
champs = Label(windows, text="Parle a Robot")
champs.pack()
#Un autre label qui répète ce qui est écrit
champs_repete = Label(windows, textvariable=var_texte)
champs_repete.pack()
#Le widget de saisie de texte
ligne_texte = Entry(windows, textvariable=var_texte, width=30, fg="red")
ligne_texte.bind("<Return>", MAJ)
ligne_texte.pack()
#Le bouton quitter
button_quit = Button(windows, text="Quitter le logiciel", command=windows.quit)
button_quit.pack()
- Edité par Olygrim il y a 5 minutes
Ah d'accord, je n'avais pas vu merci de ton aide, sa s'ecrit bien dans la console mais pas a l'ecran
_ 2 labels. L'un appelé champs qui affiche le texte Parle à Robot. L'autre qui s'appelle champs_repete (invisible au début, mais tu peux personnaliser son apparence) qui affiche exactement ce que tu tape dans ta zone de saisie
_1 zone de saisie appelé ligne_texte. Tu écrit ton texte à l'intérieur, et lorsque tu appuie sur la touche Entrée, tu affiche dans la console le contenu de la variable var_texte.
_1 bouton quitter (que je n'ai pas testé, mais qui est censé fermer la fenêtre)
× Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
× Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.