0/5 (1 avis)
Vue 15 343 fois - Téléchargée 1 776 fois
from tkinter import* from tkinter import ttk import time,sys from subprocess import call class Fen: """instance de classe""" def __init__(self): self.root=Tk() self.center_window(650,980) self.root.title("minimum python") #-------------------------titre de notre application------------------- self.lab=Label(self.root,text=" configuration minimum d'un script python ", relief=SUNKEN,bd=2,font=24) self.lab.pack(pady=10,fill=BOTH) #titre----------------------------------------------------------------- self.f=LabelFrame(self.root) self.f.pack(fill=X) #inclure le titre du script Label(self.f,text="titre du script : ").pack(side=LEFT,fill=NONE, expand=1,anchor=CENTER) self.entree_titre=Entry(self.f,width=70) self.entree_titre.focus_set() self.entree_titre.pack(side=TOP,fill=NONE, expand=1,anchor=CENTER) #précision sur le codage----------------------------------------------- self.frame=LabelFrame(self.root,padx=140,pady=10) self.frame.pack(fill=X) self.var_code=IntVar()#variable pour le controle le l'état du checkbutton self.code=Checkbutton(self.frame,text="inclure le codage", #inclure le codage variable=self.var_code,command= self.com) self.code.pack(anchor=CENTER,expand=0) self.var_lat=IntVar()#variable pour le controle le l'état du checkbutton self.lat=Checkbutton(self.frame, text="Latin-1",variable=self.var_lat, state=DISABLED,command= self.com2) # -*-coding:Latin-1 -* self.lat.pack(anchor=CENTER,expand=0) self.var_utf=IntVar()#variable pour le controle le l'état du checkbutton self.utf=Checkbutton(self.frame, text="UTF-8",variable=self.var_utf, state=DISABLED,command= self.com2) # -*-coding:Utf-8 -* self.utf.pack() #importation----------------------------------------------------------- self.frame2=LabelFrame(self.root,padx=13) self.frame2.pack(fill=X) self.scrol=Scrollbar(self.frame2,orient=VERTICAL) self.scrol.pack(side=RIGHT,fill=Y) self.scrol_y=Scrollbar(self.frame2,orient=HORIZONTAL) self.scrol_y.pack(side =BOTTOM,fill=X) #nommer les imports lab2=Label(self.frame2,text=" import : ",anchor=W, justify=LEFT) lab2.pack(pady=20,side=LEFT,fill="none",expand=0,anchor=N) self.texte=Text(self.frame2,width=50,height=5,wrap=NONE) self.texte.pack(pady=20)#objet Text permettant de recevoir les imports self.texte.config(yscrollcommand=self.scrol.set, xscrollcommand=self.scrol_y.set) self.scrol.config(command=self.texte.yview) self.scrol_y.config(command=self.texte.xview) self.frame3=LabelFrame(self.root,padx=94,pady=5) self.frame3.pack() self.var_nom=IntVar()#variable pour le controle le l'état du checkbutton self.nom=Checkbutton(self.frame3,text="Auteur",variable=self.var_nom, command=self.com3)#checkbutton pour l'auteur self.nom.pack(side=LEFT,fill=BOTH) self.entree_nom=Entry(self.frame3,state=DISABLED) self.entree_nom.pack() self.frame4=LabelFrame(self.root,padx=93,pady=5) self.frame4.pack() self.var_licence=IntVar()#variable pour le controle le l'état du checkbutton self.licence=Checkbutton(self.frame4,text="licence",variable=self.var_licence, command=self.com4)#checkbutton pour la licence self.licence.pack(side=LEFT,fill=BOTH) self.entree_licence=Entry(self.frame4,state=DISABLED) self.entree_licence.pack() self.frame5=LabelFrame(self.root,padx=91,pady=5) self.frame5.pack() self.var_version=IntVar()#variable pour le controle le l'état du checkbutton self.version=Checkbutton(self.frame5,text = "Version",variable=self.var_version, command=self.com5)#checkbutton pour la version self.version.pack(side=LEFT,fill=X,expand=1) self.entree_version=Entry(self.frame5,state=DISABLED) self.entree_version.pack() self.generer=ttk.Button(self.root,text="générer",command=self.genere, width=53) #bouton pour générer le code self.generer.pack(pady=10,anchor=CENTER) #panneau du bas-------------------------------------------------------- #sortie sur l'objet Text "texte2" de toutes les informations recueillies self.scrol2_x=Scrollbar(self.root,orient=VERTICAL) self.scrol2_x.pack(side=RIGHT,fill=Y) self.scrol2_y=Scrollbar(self.root,orient=HORIZONTAL) self.scrol2_y.pack(side=BOTTOM,fill=X) self.texte2=Text(self.root, width=60, height=17,wrap=NONE) self.texte2.pack(pady=10) self.texte2.config(yscrollcommand=self.scrol2_x.set, xscrollcommand=self.scrol2_y.set) self.scrol2_x.config(command=self.texte2.yview) self.scrol2_y.config(command=self.texte2.xview) ttk.Button(self.root,text="Quitter", command =self.root.destroy, width=53).pack(anchor=CENTER)#bouton pour quitter self.root.mainloop()#boucle principale def center_window(self,w=300, h=200): """centre la fenetre en fonction de la résolution""" # on récupère la largeur et la hauteur de la fenetre ws = self.root.winfo_screenwidth() hs = self.root.winfo_screenheight() # on calcul la position x, y x = (ws/2) - (w/2) y = (hs/2) - (h/2) self.root.geometry('%dx%d+%d+%d' % (w, h, x, 0))#dernier chiffre = 0 #pour coller la fenetre #en haut def com(self): """commande du check bouton incluant les imports""" if self.var_code.get() == 1: self.lat.config(state=NORMAL) self.utf.config(state=NORMAL) else: self.var_lat.set(0) self.var_utf.set(0) self.lat.config(state=DISABLED) self.utf.config(state=DISABLED) def com2(self): """commande du check bouton incluant l'encodage""" if self.var_lat.get()==1: self.utf.config(state=DISABLED) elif self.var_lat.get()==0: self.utf.config(state=NORMAL) if self.var_utf.get()==1: self.lat.config(state=DISABLED) elif self.var_utf.get()==0: self.lat.config(state=NORMAL) def com3(self): """commande du check bouton incluant l'auteur""" if self.var_nom.get()==1: self.entree_nom.config(state=NORMAL) self.entree_nom.focus_set() else: self.entree_nom.delete(0,END) self.entree_nom.config(state=DISABLED) def com4(self): """commande du check bouton incluant la licence""" if self.var_licence.get()==1: self.entree_licence.config(state=NORMAL) self.entree_licence.focus_set() else: self.entree_licence.delete(0,END) self.entree_licence.config(state=DISABLED) def com5(self): """commande du check bouton incluant la version""" if self.var_version.get()==1: self.entree_version.config(state=NORMAL) self.entree_version.focus_set() else: self.entree_version.delete(0,END) self.entree_version.config(state=DISABLED) def analyse(self,liste): """analyse la liste passée en argument pour obtenir le maxi de la liste""" maxi=0 for i in liste: if len(i)>maxi: maxi=len(i) return maxi def X(self,nb): """determine le nombre d'espace avant et après le mot a encadrer de # """ x=nb-(nb//2)#espace avant le mot y=(nb//2) #espace après le mot return x,y def presente(self,l): """presentation avec un encadrement de symbole # """ maxi =self.analyse(l) maxi2=maxi+2 self.texte2.insert(END,("#"*maxi2)+"\n") for i in l: x=len(i) sp=self.X(maxi-x) space1=(" "*int(sp[0])) space2=(" "*int(sp[1])) self.texte2.insert(END,"#"+space1+i+space2+"#\n") self.texte2.insert(END,"#"*maxi2+"\n\n") def genere(self): """genere le code minimal dans la fenetre texte2""" self.texte2.delete(1.0,END) self.date=time.strftime('%d/%m/%y',time.localtime())#date du document liste=[]#liste des imports a inclure if self.entree_titre.get(): #si l'entree contient quelque liste.append(self.entree_titre.get()) #chose ,on l'ajoute a la liste liste.append(self.date) if self.var_nom.get()==1: if self.entree_nom.get(): #si l'entrée auteur contient un element liste.append("Auteur : "+self.entree_nom.get())#on l'ajoute à la liste if self.var_licence.get()==1: if self.entree_licence.get():#si l'entréée licence contient quelque chose liste.append("Licence : "+self.entree_licence.get())#on l'ajoute à la liste if self.var_version.get()==1: if self.entree_version.get():#si l'entrée version contient un element liste.append("Version : "+self.entree_version.get())#on l'ajoute à la liste self.presente(liste) #insertion du codage dans le texte self.texte2.insert(END,"#!/usr/bin/python\n") if self.var_lat.get() == 1: self.texte2.insert(END,"# -*-coding:Latin-1 -*\n\n") if self.var_utf.get()==1: self.texte2.insert(END,"# -*-coding:Utf-8 -*\n\n") #insertion de l'auteur dans le texte if self.var_nom.get()==1: if self.entree_nom.get(): self.texte2.insert(END,"__auteur__ = "+"\""+self.entree_nom.get()+"\""+"\n") #insertion de la licence dans le texte if self.var_licence.get()==1: if self.entree_licence.get(): self.texte2.insert(END,"__licence__ = "+"\""+self.entree_licence.get()+"\""+"\n") #insertion de la version dans le texte if self.var_version.get()==1: if self.entree_version.get(): self.texte2.insert(END,"__version__ = "+"\""+self.entree_version.get()+"\""+"\n") self.texte2.insert(END,"\n") l=self.texte.get(1.0,END).split("\n") for i in l:#importation pour le code if i != "": if "import" in i: self.texte2.insert(END,i+"\n") else: self.texte2.insert(END,"import "+i+"\n") with open("generate","w") as f: #ouvre le fichier "generate" si il copy=self.texte2.get(1.0,END) #existe sinon on le créé f.write(copy) for i in sys.path: if "idlelib" in i: path = i path=path.replace("\\","/") path=path+"/idle.bat generate" #Ouvre IDLE et envoi les données entrées dans le script #Changer le chemin d'acces pour un autre utilitaire dont vous entrez #le chemin #Laisser l'instruction "generate" à la fin #Doubler les antislash "\" dans le chemin d'accès call(path) if __name__== "__main__": app=Fen() #creation de l'objet Fen, fenetre principal de notre application
22 janv. 2013 à 00:27
1) "#!/usr/bin/python\n" et la ligne indiquant le codage doivent être déclaré au début du programme sachant que "#!/usr/bin/python\n" doit forcément être sur la première ligne si je ne me trompe pas (c'était comme ça en tout cas sur les anciennes versions de Python)
2) Normalement les variables systèmes doivent être en anglais : Auteur -> Author
Cordialement
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.