#Author : Nicola Piazzolla #License: GPL #email : nids@libero.it import Tkinter from Tkconstants import * import sys from os.path import exists class PartitaDoppia: def __init__(self): self.Window=Tkinter.Tk() self.Window.title('Partita-Doppia') self.TextFile=Tkinter.StringVar() self.TextRegistrazione=Tkinter.StringVar() self.TextImporto=Tkinter.StringVar() self.TextImporto.set('0') self.TextDecima=Tkinter.StringVar() self.TextDecima.set('00') self.ListDare=[] self.ListAvere=[] self.ImpoD=[] self.ImpoA=[] self.TextBox=0 self.TextRead='' self.filer=None self.report=None self.wineabout=None self.aboutcheck=0 self.AmmountDare=0 self.AmmountAvere=0 self.CreateWidgets() self.Window.mainloop() def CreateWidgets(self): LabelFrame=Tkinter.Frame() Tkinter.Label(LabelFrame,text="Partita Doppia",fg="red").pack(side=Tkinter.TOP,pady=8) LabelFrame.pack() frameText=Tkinter.Frame() Tkinter.Label(frameText,text="Inserire file:").pack(side=Tkinter.LEFT,pady=8) Tkinter.Entry(frameText,textvariable=self.TextFile,width=20).pack(side=Tkinter.LEFT) Apri=Tkinter.Button(frameText,text="Visualizza file",fg="red",command=self.Visualizza) Apri.pack(side=Tkinter.RIGHT,padx=10) frameText.pack() Frame=Tkinter.Frame() self.LabelStatus=Tkinter.Label(Frame,text="Registrazione:").pack(side=Tkinter.LEFT) Tkinter.Entry(Frame,textvariable=self.TextRegistrazione,width=48).pack(side=Tkinter.LEFT) Tkinter.Label(Frame,text=" Importo E.").pack(side=Tkinter.LEFT) Tkinter.Entry(Frame,textvariable=self.TextImporto,width=10).pack(side=Tkinter.LEFT) Tkinter.Entry(Frame,textvariable=self.TextDecima,width=2).pack(side=Tkinter.RIGHT) Frame.pack() FrameButton=Tkinter.Frame() self.DareButton=Tkinter.Button(FrameButton,text="Registra in Dare",fg="red",command=self.Dare) self.DareButton.pack(side=Tkinter.LEFT,pady=25) self.AvereButton=Tkinter.Button(FrameButton,text="Registra in Avere",fg="red",command=self.Avere,state=Tkinter.DISABLED) self.AvereButton.pack(side=Tkinter.LEFT) self.PareggioButton=Tkinter.Button(FrameButton,text="Controllo Pareggio",state=Tkinter.DISABLED,fg="red",command=self.Pareggio) self.PareggioButton.pack(side=Tkinter.LEFT) self.RegistraButton=Tkinter.Button(FrameButton,text="Registra sul file",state=Tkinter.DISABLED,fg="red",command=self.Registra) self.RegistraButton.pack(side=Tkinter.LEFT) Tkinter.Button(FrameButton,text="About..", fg="red", command=self.about).pack(side=Tkinter.LEFT) Tkinter.Button(FrameButton,text="Esci",fg="red",command=sys.exit).pack(side=Tkinter.LEFT) FrameButton.pack() ErrorFrame=Tkinter.Frame() self.LabelReport=Tkinter.Label(ErrorFrame,text="Inserire il file per salvare\n o per visualizzarlo",fg="red",background="black",height=8,width=30,relief=Tkinter.SUNKEN) self.LabelReport.pack(side=Tkinter.BOTTOM) ErrorFrame.pack() def Visualizza(self): self.filer=self.TextFile.get() check=exists(self.filer) if self.filer == '': self.LabelReport["text"]="Inserire il nome del file\n da leggere" elif check != 1 : self.LabelReport["text"]="Il File non esiste!" else: root=Tkinter.Tk() root.title(self.filer) Frame=Tkinter.Frame(root) labframe=Tkinter.Frame(root) Tkinter.Button(Frame,text="Esci",fg="red",command=root.destroy).pack(side=Tkinter.LEFT,pady=10,padx=8) Tkinter.Button(Frame,text="Modifica",fg="red",command=self.modify).pack(side=Tkinter.LEFT) self.report=Tkinter.Label(labframe,text="") self.report.pack(side=Tkinter.LEFT) self.TextBox=Tkinter.Text(Frame,background="white",font=("Century",14)) self.TextBox.pack(fill=Tkinter.BOTH,expand=Tkinter.YES) try: fd=open(self.filer,"r") self.TextRead=fd.read() except: self.LabelReport["text"]="Errore visualizzazione" fd.close() root.destroy() self.TextBox.insert("1.0",self.TextRead) fd.seek(0) self.LabelReport["fg"]="green" self.LabelReport["text"]="Visualizzazione Effettuata" fd.close() Frame.pack() labframe.pack() def modify(self): try: fd=open(self.filer,"w") fd.write(self.TextBox.get("1.0",Tkinter.END)) fd.close() self.report["fg"]="black" self.report["text"]="Modificato..." except: self.report["fg"]="red" self.report["text"]="Errore" fd.close() def Dare(self): file=self.TextFile.get() str=self.TextRegistrazione.get() imp=self.TextImporto.get() decim=self.TextDecima.get() if file == '' or str == '' or imp == '' : self.LabelReport["fg"]="red" self.LabelReport["text"]="Necessario\nInserire i dati nei campi vuoti" else: self.AmmountDare=self.AmmountDare + float(self.TextImporto.get() +'.' +self.TextDecima.get()) dato=str self.ImpoD.append(imp + '.' + decim + '\n') self.ListDare.append(dato) self.LabelReport["fg"]="green" self.LabelReport["text"]="Registrazione effettuata in Dare" self.AvereButton["state"]=Tkinter.NORMAL self.TextRegistrazione.set('') self.TextImporto.set('0') self.TextDecima.set('00') def Avere(self): file=self.TextFile.get() str=self.TextRegistrazione.get() imp=self.TextImporto.get() decim=self.TextDecima.get() if file == '' or str == '' or imp == '' : self.LabelReport["fg"]="red" self.LabelReport["text"]="Necessario\nInserire i dati nei campi vuoti" else: self.AmmountAvere=self.AmmountAvere + float(self.TextImporto.get() + '.' + self.TextDecima.get()) dato=str self.ImpoA.append(imp + '.' + decim +'\n') self.ListAvere.append(dato) self.LabelReport["text"]="Registrazione effettuata in Avere" self.DareButton["state"]=Tkinter.DISABLED self.PareggioButton["state"]=Tkinter.NORMAL self.TextRegistrazione.set('') self.TextImporto.set('0') self.TextDecima.set('00') def Pareggio(self): self.AvereButton["state"]=Tkinter.DISABLED self.RegistraButton["state"]=Tkinter.NORMAL if self.AmmountDare == self.AmmountAvere: self.LabelReport["fg"]="green" self.LabelReport["background"]="black" self.LabelReport["text"]="Il dare e l'avere pareggiano\nPuoi salvare sul file" else: self.LabelReport["fg"]="red" self.LabelReport["text"]="Il Dare e l'Avere non pareggiano\nPuoi salvare sul file\nSuccessivamente correggere\nla registrazione" def Registra(self): strdare=0 stravere=0 file=self.TextFile.get() if file == '': self.LabelReport["background"]="black" self.LabelReport["text"]="Inserire il nome del file" else : try: status=exists(file) if status != 1 : fd=open(file,"a+") fd.write('Voce' + ' ' *36 + 'DARE' + ' ' * 19 + 'AVERE\n\n') fd.close() fd=open(file,"a+") for strdare in range(len(self.ListDare)): fd.write(self.ListDare[strdare]) fd.write(' ' * (37 - len(self.ListDare[strdare])+3)) fd.write(self.ImpoD[strdare]) for stravere in range(len(self.ListAvere)): fd.write(self.ListAvere[stravere]) fd.write(' ' * (60 - len(self.ListAvere[stravere])+3)) fd.write(self.ImpoA[stravere]) fd.write('-' * 39) fd.write('\n') fd.close() self.LabelReport["background"]="black" self.LabelReport["fg"]="green" self.LabelReport["text"]="Salvataggio Effettuato" except: self.LabelReport["background"]="black" self.LabelReport["fg"]="red" self.LabelReport["text"]="Salvataggio non riuscito\nUscire.." fd.close() self.PareggioButton["state"]=Tkinter.DISABLED self.DareButton["state"]=Tkinter.NORMAL self.RegistraButton["state"]=Tkinter.DISABLED self.ListDare=[] self.ListAvere=[] self.AmmountDare=0 self.AmmountAvere=0 self.ImpoD=[] self.ImpoA=[] def about(self): if self.aboutcheck == 0: self.winabout=Tkinter.Tk() self.winabout.title('About...') frame=Tkinter.Frame(self.winabout) Tkinter.Label(frame,text="Programma di Partita Doppia\nLicenza GPL\nAutore: Nicola Piazzolla\nemail: nids@libero.it",fg="black").pack() Tkinter.Button(frame,text="Chiudi",command=self.destr).pack() frame.pack() self.aboutcheck=1 def destr(self): self.winabout.destroy() self.aboutcheck=0 if __name__ == '__main__': start=PartitaDoppia()