Problème pour récupérer le texte d'une entrée (par Tkinter) [Résolu]

macchouffe 3 Messages postés mercredi 7 janvier 2015Date d'inscription 8 janvier 2015 Dernière intervention - 7 janv. 2015 à 21:10 - Dernière réponse : lespinx 96 Messages postés lundi 9 octobre 2006Date d'inscription 24 février 2018 Dernière intervention
- 9 janv. 2015 à 17:13
Bonjour à tous,
voilà je suis débutant sur python et j'ai un petit souci pour récupérer mon texte par l'entrée de l'interface tkinter.

voilà un essais de mon programme afin de prouver que je ne récupère pas mon entrée :

from tkinter import *
def essais():
    Texte.set(valeur) #je récupère la variable de mon entrée afin se savoir si je l'ai bien récupéré

fenetre=Tk()
fenetre.geometry('300x100+400+400')
saisir=StringVar()
Texte=StringVar()

sais=Entry(fenetre,textvariable=saisir, width=7)
sais.pack() 
valeur=saisir.get()
reponse=Label(fenetre, textvariable = Texte,width=30)
bouton= Button(fenetre, text='valider', command= essais)
bouton.pack()
reponse.pack()
fenetre.mainloop()


Et il ne me renvoie pas mon entrée.
merci de vos réponses

EDIT: Ajout de la coloration syntaxique.
Afficher la suite 

Votre réponse

4 réponses

lespinx 96 Messages postés lundi 9 octobre 2006Date d'inscription 24 février 2018 Dernière intervention - 8 janv. 2015 à 16:13
0
Merci
Bonjour,

L'ordre de saisie du champ en entrée est mal placé.

from tkinter import *
def essais():
    valeur=saisir.get() #<======
    Texte.set(valeur) #je récupère la variable de mon entrée afin se savoir si je l'ai bien récupéré

fenetre=Tk()
fenetre.geometry('300x100+400+400')
saisir=StringVar()
Texte=StringVar()

sais=Entry(fenetre,textvariable=saisir, width=7)
sais.pack()
#valeur=saisir.get()
reponse=Label(fenetre, textvariable = Texte,width=30)
bouton= Button(fenetre, text='valider', command= essais)
bouton.pack()
reponse.pack()
fenetre.mainloop()


--
macchouffe 3 Messages postés mercredi 7 janvier 2015Date d'inscription 8 janvier 2015 Dernière intervention - 8 janv. 2015 à 21:19
merci pour ton aide
a bientot
macchouffe 3 Messages postés mercredi 7 janvier 2015Date d'inscription 8 janvier 2015 Dernière intervention - 8 janv. 2015 à 21:50
enfaite j'ai un autre souci...
tu as résolu mon précédent problème, mais en faite je voulais stocker le texte entré dans une liste, qui elle même est stocké dans un fichier extérieur que j'importerai plus tard. Mais fonction marche correctement lorsque je rentre le texte par python (que se soit le stockage jusqu'à la lecture du fichier), mais le souci c'est que ça ne marche pas en entrant le texte par l'interface tkinter.
Voici le programme :

def register ():
import pickle
Aut=[]
Tit=[]
Fichier_A = open('auteurs.txt','rb') #importation
Fichier_T = open('titres.txt','rb')
Aut=pickle.load(Fichier_A)
Tit=pickle.load(Fichier_T)
Fichier_T.close()
Fichier_A.close()

A=Amod.get() #écriture
T=Tmod.get()
Aut.append(A)
Tit.append(T)

Fichier_A = open('auteurs.txt','wb') #sauvegarde
Fichier_T = open('titres.txt','wb')
pickle.dump(Aut,Fichier_A)
Fichier_A.close()
pickle.dump(Tit,Fichier_T)
Fichier_T.close()


from tkinter import *
fen_menu = Tk()
fen_menu.title('Register')
fen_menu.geometry('300x300+400+400')
Amod=StringVar()
Tmod=StringVar()


Aut_saisi = Entry(fen_menu, textvariable=Amod, width=30)
Tit_saisi = Entry(fen_menu, textvariable=Tmod, width=30)
Aut_saisi.pack()
Tit_saisi.pack()

Valider=Button(fen_menu, text='valider', command=register())
Valider.pack()
Quitter=Button(fen_menu, text='Quitter', command=fen_menu.destroy)
Quitter.pack()
fen_menu.mainloop()

Lorsque je rentre un texte il me la rajoute dans la liste mais avec une chaîne de caractère "vide" telle que : [" "]
lespinx 96 Messages postés lundi 9 octobre 2006Date d'inscription 24 février 2018 Dernière intervention > macchouffe 3 Messages postés mercredi 7 janvier 2015Date d'inscription 8 janvier 2015 Dernière intervention - 9 janv. 2015 à 17:13
Re-bonjour,

Pour la lisibilité et la compréhension et si tu souhaites de l'aide, il faut utiliser la balise de code surtout pour l'affichage de l'indentation qui est significatif en Python.

L'ordre
Valider=Button(fen_menu, text='valider', command=register()) 
est faux et ne fonctionne pas.
Il faut coder
Valider=Button(fen_menu, text='valider', command=register) 


Pour des raisons internes Tkinter n'accepte pas de paramêtres dans l'appel de fonction de l'ordre command
Commenter la réponse de lespinx

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.