#!/usr/bin/python # -*- coding:Utf-8 -*- import tkinter import os import configparser from tkinter import messagebox from tkinter import filedialog #Déclaration variables cmd = "" #recupe configuration try: config = configparser.SafeConfigParser() config1 = configparser.SafeConfigParser() config1.read('gomails.cfg') except: messagebox.showerror("Attention", "Arret programme fichier gomails.cfg introuvable") sys.exit() try: repertoire = config1['Fichier']['chemin'] adresse_serveur = config1['Serveur']['SAdresse'] port = config1['Serveur']['port'] Tmax = config1['Serveur']['taillemax'] user = config1['Emetteur']['EAdresse'] name = config1['Style']['Entete'] except: messagebox.showerror("Attention", "Arret programme fichier gomails.cfg mal formate ou introuvable") sys.exit() #//Définition de la fenêtre avec tous ses composants et procédure/fonctions class simpleapp_tk(tkinter.Tk): def __init__(self,parent): tkinter.Tk.__init__(self,parent) self.parent = parent self.initialize() def initialize(self): self.grid() # Mise en place des Labels lbl_0 = tkinter.Label(self,text="Interface graphique permattant d'utiliser Gomails, pour réaliser l'envoi de lots de fichiers dans le même répertoire en limitant la taille maximum par email",anchor="center",height=3,wraplength=500,borderwidth=10,fg="brown",font="helvetica 10 bold") lbl_0.grid(column=0,row=0,columnspan=5,sticky='EW') #le colspawn est fait pour prendre toute la largeur de la grille de la fiche self.lbl_1Variable = tkinter.StringVar() lbl_1 = tkinter.Label(self,textvariable=self.lbl_1Variable,anchor="w",height=2,font="helvetica 10") self.lbl_1Variable.set("Adresse email déstinataire :") # lbl_1 = tkinter.Label(self,text="Adresse email déstinataire :",anchor="w",height=2,font="helvetica 10") lbl_1.grid(column=0,row=1,sticky='EW') lbl_2 = tkinter.Label(self,text="Sujet du mail :",anchor="w",height=2,font="helvetica 10") lbl_2.grid(column=0,row=2,sticky='EW') lbl_3 = tkinter.Label(self,text="Message du mail :",anchor="w",height=2,font="helvetica 10") lbl_3.grid(column=0,row=3,sticky='EW') lbl_4 = tkinter.Label(self,text="Chemin des fichiers :",anchor="w",height=2,font="helvetica 10") lbl_4.grid(column=0,row=4,sticky='EW') lbl_5 = tkinter.Label(self,text="Adresse serveur SMTP :",anchor="w",height=2,font="helvetica 10") lbl_5.grid(column=0,row=5,sticky='EW') lbl_6 = tkinter.Label(self,text="Taille maxi mails (Mo) :",anchor="w",height=2,font="helvetica 10") lbl_6.grid(column=0,row=6,sticky='EW') lbl_7 = tkinter.Label(self,text="Adresse mail expéditeur :",anchor="w",height=2,font="helvetica 10") lbl_7.grid(column=0,row=7,sticky='EW') #Affichage des répertoires (Option relief pour modifier l'apparence) self.lbl_repertoireVariable = tkinter.StringVar() lbl_repertoire = tkinter.Label(self,textvariable=self.lbl_repertoireVariable,anchor="w",relief="ridge",fg="blue",height=1,font="helvetica 10") self.lbl_repertoireVariable.set(repertoire) lbl_repertoire.grid(column=1,row=4,columnspan=3,sticky='EW') #Mise en place des 3 blocs texte self.txt_adr_destVariable = tkinter.StringVar() self.txt_adr_dest = tkinter.Entry(self,textvariable=self.txt_adr_destVariable, width=40) self.txt_adr_dest.grid(column=1,row=1,columnspan=3,sticky='EW') self.txt_adr_dest.bind("", self.OnPressEnter_adr) self.txt_adr_destVariable.set("") self.txt_sujetVariable = tkinter.StringVar() self.txt_sujet = tkinter.Entry(self,textvariable=self.txt_sujetVariable, width=40) self.txt_sujet.grid(column=1,row=2,columnspan=3,sticky='EW') self.txt_sujet.bind("", self.OnPressEnter_sujet) self.txt_sujetVariable.set("") self.txt_msgVariable = tkinter.StringVar() self.txt_msg = tkinter.Entry(self,textvariable=self.txt_msgVariable, width=40) self.txt_msg.grid(column=1,row=3,columnspan=3,sticky='EW') #self.txt_msg.bind("", self.OnPressEnter_msg) self.txt_msgVariable.set("") #Définition du remplissage debug self.txt_adr_destVariable.set("dav@dav.net") self.txt_sujetVariable.set("sujet") self.txt_msgVariable.set("message") #Création ds boutons btn_envoie = tkinter.Button(self,text="Valider",command=self.Onbtn_envoieClick) btn_envoie.grid(column=4,row=8) btn_chemin = tkinter.Button(self,text="Modif répertoire fichiers",command=self.Onbtn_cheminClick) btn_chemin.grid(column=3,row=8) self.grid_columnconfigure(0,weight=1) self.resizable(True,False) def Onbtn_envoieClick(self): #self.lbl_1Variable.set(self.txt_adr_destVariable.get()+" (Vous avez cliqué sur le bouton)" ) self.txt_adr_dest.focus_set() self.txt_adr_dest.selection_range(0, tkinter.END) #print('Pas erreur !') #print(message) #message = "" #print('pas erreur') cmd = "Gomails.py " + str(self.txt_adr_destVariable.get()) + " " + str(self.txt_sujetVariable.get()) + " " + str(self.txt_msgVariable.get()) #print("La commande envoyee est : " + cmd) #Attention la fonction cmd.read si elle est appellée 2 fois à la deuxième passe je perd les infos à l'intérieur ??? #par exemeple si avant cette ligne, je place un print(cmd.read()) je n'ai plus rien d'afficher dans mon label ! cmd = os.popen("python " + cmd) #self.lbl_4Variable.set("Message de sortie : " + cmd.read()) messagebox.showinfo("Retour de Gomails", cmd.read()) #cmd.read() def Onbtn_cheminClick(self): print("Clique bouton chemin") dirname = filedialog.askdirectory() #messagebox.showinfo(message=dirname) self.lbl_repertoireVariable.set(dirname) #config['Style']['test'] = 'teste' config.add_section('Fichier') config.add_section('Serveur') config.add_section('Style') config.add_section('Emetteur') config.set('Style', 'test', 'Tesdfsghsfghsfghjsfghjsfgjsfjsghjs') config.set('Fichier', 'chemin', str(repertoire)) config.set('Serveur', 'SAdresse', str(adresse_serveur)) config.set('Serveur', 'port', str(port)) config.set('Serveur', 'taillemax', str(Tmax)) config.set('Emetteur', 'EAdresse', str(user)) config.set('Style', 'Entete', str(name)) with open('gomails.cfg', 'wb') as conf_file: config.write(conf_file) #Içi il est nécessaire de recrer toutes les valeurs car configparser ne garde pas le fichier complet en mémoire (comme en Delphi) si bien que lorsque je l'écris, il n'y a plus que les clef modifiées qui apparaissent'' def OnPressEnter_adr(self,event): self.txt_sujet.focus_set() self.txt_sujet.selection_range(0, tkinter.END) def OnPressEnter_sujet(self,event): self.txt_msg.focus_set() self.txt_msg.selection_range(0, tkinter.END) # def OnPressEnter_msg(self,event): # self.button.focus_set() if __name__ == "__main__": app = simpleapp_tk(None) app.title('GUI Gomails') app.mainloop()