Recuperer string saisi tkinter envoi de mail

Résolu
codeur782 -  
mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

Je développe un programme en python avec interface graphique
tkinter
afin d'envoyer des emails. (Je débute avec
tkinter
). L'envoi d'email seul fonctionne en console avec un input pour le message à envoyer. En GUI, j'aimerais récupérer dans une variable le message afin de l'envoyer par mail.

Code de la zone de texte :

tx = tkinter.Text(root)
tx.place(x=50, y=30, width=200, height=100)


Code pour le mail :

server.sendmail(sent_from, to)


Dans l'idéal, après "to", j'aimerais ajouter "msg" pour la variable contenant la string saisie.

Merci d'avance
A voir également:

1 réponse

mamiemando Messages postés 33772 Date d'inscription   Statut Modérateur Dernière intervention   7 882
 
Bonjour,

Explication du problème

Sans boucle d'événement, ton interface
tkinter
ne peut pas marcher. Je t'invite donc à regarder l'exemple et à l'adapter à tes besoins.

Dans l'idée, il faut créer une (ou plusieurs) zone(s) de texte (destinataire, sujet, message, ...) comme dans un client mail normal, un bouton pour envoyer, et faire en sorte que ton interface réagisse quand on clique sur le bouton (soit à l'aide du paramètre
command
, soit à l'aide de
bind
) pour déclencher le code pour envoyer l'email construit à partir des valeurs saisies dans la ou les zones de texte, puis lancer la boucle d'événement, voir
mainloop
).

Comment résoudre ton problème

Voici un exemple minimal (récupéré depuis ce lien) :

import tkinter as tk
root = tk.Tk()

def callback(x):
    print('button', x)

tk.Button(text='Button 1', command=lambda : callback(1)).pack()
tk.Button(text='Button 2', command=lambda : callback(2)).pack()
tk.Button(text='Button 3', command=lambda : callback(3)).pack()

root.mainloop()


Retour à ton problème

Si on adapte l'exemple précédent à ton cas :

import tkinter as tk
 
def callback(root):
    text_from = root.entry_from.get()
    text_to = root.entry_to.get()
    text_sub = root.entry_sub.get()
    text_msg = root.entry_msg.get()
    print(f"""
    From: {text_from}
    To: {text_to}
    Sub: {text_sub}
    Msg: {text_msg}""")
                    
root = tk.Tk()      
                    
root.entry_from = tk.Entry(root, width=10)
root.entry_from.insert(tk.END, "titi@gmail.com")
root.entry_from.pack()
root.entry_to = tk.Entry(root, width=10)
root.entry_to.insert(tk.END, "toto@gmail.com")
root.entry_to.pack()
root.entry_sub = tk.Entry(root, width=10)
root.entry_sub.insert(tk.END, "Subject")
root.entry_sub.pack()
root.entry_msg = tk.Entry(root, width=10)
root.entry_msg.insert(tk.END, "Dear toto ... Best regards, titi")
root.entry_msg.pack()
root.button = tk.Button(text="Send", command=lambda: callback(root))
root.button.pack()
root.mainloop()


Résultat (quand on clique sur le bouton) :

    From: titi@gmail.com
To: toto@gmail.com
Sub: Subject
Msg: Dear toto ... Best regards, titi


Bonne chance
0