Entrée et sortie d'un Tkinter

Fermé
Kranenoeil Messages postés 14 Date d'inscription mercredi 29 mai 2013 Statut Membre Dernière intervention 17 juin 2017 - 9 mai 2017 à 15:47
 gudu - 9 mai 2017 à 23:48
Bonjour,

Je souhaite créer un Tkinter simple avec un champ permettant de rentrer une phrase, que celle ci passe dans ma focntion et que le résultat soit affiché dessous.

Cependant je n'arrive pas à le faire marcher et je ne sais pas si c'est l'entrée ou la sortie (ou les deux) qui ne marchent pas. Je précise que le fonctionne marche très bien avec un input en entrée et un print en sortie. Le voici :

import tkinter as tk

root = tk.Tk()

value = tk.StringVar()

entree = tk.Entry(root, textvariable=value, width=30)
entree.pack()

label_value = tk.Label(root, textvariable=f)
label_value.pack()

def traduire() :
global value
global f
dictionary = {}
with open("fichier.txt", "r") as f:
for line in f:
word, word_trad = line.rstrip('\n').split('=')
if word not in dictionary:
dictionary[word] = word_trad

s=value
words = s.split()

res = words[:]

for ind, word in enumerate(words):
if word in dictionary:
res[ind] = dictionary[word]

f=' '.join(res)


bouton_afficher = tk.Button(root, text="Afficher", command=traduire)
bouton_afficher.pack()

bouton_quitter = tk.Button(root, text="Quitter", command= root.destroy)
bouton_quitter.pack()


root.mainloop()



La fonction traduire permet de prendre une phrase en langage sms et de le ressortir en bon français avec l'aide d'un fichier texte.

Ce que je cherche dans ce tkinter est simple : une entrée (ici "entree") où je marque la phrase à traduire. Le bouton "Afficher" qui execute la fonction avec la phrase présente dans l'entrée et un champ qui m'affiche le résultat.

Merci d'avance !

1 réponse

Le message est pourtant clair.

NameError: name 'f' is not defined

Ensuite :

s=value
words = s.split()

res = words[:] # Que fait ceci ?


s est donc un stringvar et non str, tu ne peux donc utiliser dessus les méthodes de str.

pareil plus loin sur ta variable f qui doit être un stringvar.
0