""" Genera la finestra in cui saranno tracciati gli elementi grafici """ import Image import Tkinter import ImageTk import Graf_equa import anydbm import sys def disegna(): img = dizio["img"] y = dizio["y"] y = int(yT.get()) imma = dizio["imma"] fines = dizio["fines"] immag = dizio["immag"] root = dizio["root"] for x in range(L): try: xI,yI = Graf_equa.Carts_Immg(x,y,D,OIx,OIy,A,L) img.putpixel((xI,yI),(R,G,B)) except: #Errore Errore = 1 immag = ImageTk.PhotoImage(img) imma = fines.create_image(0,0,image=immag,anchor=Tkinter.NW) root.mainloop() def ridisegna(): img = dizio["img"] y = dizio["y"] y = int(yT.get()) imma = dizio["imma"] fines = dizio["fines"] immag = dizio["immag"] root = dizio["root"] fines.delete(imma) img = Image.new('RGB',(L,A),color=(RS,GS,BS)) for x in range(L): try: xI,yI = Graf_equa.Carts_Immg(x,y,D,OIx,OIy,A,L) img.putpixel((xI,yI),(R,G,B)) except: #Errore Errore = 1 immag = ImageTk.PhotoImage(img) imma = fines.create_image(0,0,image=immag,anchor=Tkinter.NW) root.mainloop() def cancella(): imma = dizio["imma"] fines = dizio["fines"] immag = dizio["immag"] root = dizio["root"] fines.delete(imma) img = Image.new('RGB',(L,A),color=(RS,GS,BS)) dizio["img"] = img immag = ImageTk.PhotoImage(img) imma = fines.create_image(0,0,image=immag,anchor=Tkinter.NW) root.mainloop() def termina(): root=dizio["root"] root.destroy() sys.exit('Termine del programma') def cosa_trac(): root2=Tkinter.Toplevel(root) root2.title("Cosa Tracciare") spaz_1 = Tkinter.Frame(root2) spaz_1.pack(side = Tkinter.TOP,anchor=Tkinter.CENTER) larg_fin = Tkinter.Canvas(spaz_1,width=200,height=0) larg_fin.pack() Tkinter.Button(spaz_1,text= "Retta",command=retta).pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Circonferenza",command=circon).pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Ellisse",command=ellis).pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Parabola",command=parab).pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Iperbole",command=iperb).pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Chiudi",command=root2.destroy).pack(side=Tkinter.TOP) root2.mainloop() def retta(): root3=Tkinter.Toplevel(root) root3.title("Retta") spaz_1 = Tkinter.Frame(root3) larg_fin = Tkinter.Canvas(spaz_1,width=200,height=0) larg_fin.pack() Tkinter.Label(spaz_1,text= "Retta passante per i punti:").pack(side=Tkinter.TOP) spaz_1.pack() spaz_2 = Tkinter.Frame(root3) xP1=1 yP1=2 xP2=3 yP2=4 xP1T=Tkinter.StringVar() yP1T=Tkinter.StringVar() xP2T=Tkinter.StringVar() yP2T=Tkinter.StringVar() xP1T.set(xP1) yP1T.set(yP1) xP2T.set(xP2) yP2T.set(yP2) Tkinter.Label(spaz_2,text= "P1").pack(side=Tkinter.LEFT) Tkinter.Entry(spaz_2,textvariable=xP1T).pack(side=Tkinter.LEFT) Tkinter.Label(spaz_2,text= "x").pack(side=Tkinter.LEFT) Tkinter.Entry(spaz_2,textvariable=yP1T).pack(side=Tkinter.LEFT) Tkinter.Label(spaz_2,text= "y").pack(side=Tkinter.LEFT) Tkinter.Label(spaz_2,text= "P2").pack(side=Tkinter.LEFT) Tkinter.Entry(spaz_2,textvariable=xP2T).pack(side=Tkinter.LEFT) Tkinter.Label(spaz_2,text= "x").pack(side=Tkinter.LEFT) Tkinter.Entry(spaz_2,textvariable=yP2T).pack(side=Tkinter.LEFT) Tkinter.Label(spaz_2,text= "y").pack(side=Tkinter.LEFT) spaz_2.pack() spaz_3 = Tkinter.Frame(root3) Tkinter.Button(spaz_3,text= "Chiudi",command=root3.destroy).pack(side=Tkinter.TOP) spaz_3.pack() root3.mainloop() def circon(): root4=Tkinter.Toplevel(root) root4.title("Circonferenza") spaz_1 = Tkinter.Frame(root4) spaz_1.pack(side = Tkinter.TOP,anchor=Tkinter.CENTER) larg_fin = Tkinter.Canvas(spaz_1,width=200,height=0) larg_fin.pack() Tkinter.Label(spaz_1,text= "Circonferenza").pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Chiudi",command=root4.destroy).pack(side=Tkinter.TOP) root4.mainloop() def ellis(): root5=Tkinter.Toplevel(root) root5.title("Ellisse") spaz_1 = Tkinter.Frame(root5) spaz_1.pack(side = Tkinter.TOP,anchor=Tkinter.CENTER) larg_fin = Tkinter.Canvas(spaz_1,width=200,height=0) larg_fin.pack() Tkinter.Label(spaz_1,text= "Ellisse").pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Chiudi",command=root5.destroy).pack(side=Tkinter.TOP) root5.mainloop() def parab(): root6=Tkinter.Toplevel(root) root6.title("Parabola") spaz_1 = Tkinter.Frame(root6) spaz_1.pack(side = Tkinter.TOP,anchor=Tkinter.CENTER) larg_fin = Tkinter.Canvas(spaz_1,width=200,height=0) larg_fin.pack() Tkinter.Label(spaz_1,text= "Parabola").pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Chiudi",command=root6.destroy).pack(side=Tkinter.TOP) root6.mainloop() def iperb(): root7=Tkinter.Toplevel(root) root7.title("Iperbole") spaz_1 = Tkinter.Frame(root7) spaz_1.pack(side = Tkinter.TOP,anchor=Tkinter.CENTER) larg_fin = Tkinter.Canvas(spaz_1,width=200,height=0) larg_fin.pack() Tkinter.Label(spaz_1,text= "Iperbole").pack(side=Tkinter.TOP) Tkinter.Button(spaz_1,text= "Chiudi",command=root7.destroy).pack(side=Tkinter.TOP) root7.mainloop() dizio={} dati = anydbm.open("dati_immagine","c") try: L = int(dati["DIL"]) A = int(dati["DIA"]) RS = int(dati["CFIR"]) GS = int(dati["CFIG"]) BS = int(dati["CFIB"]) OIx = int(dati["OIx"]) OIy = int(dati["OIy"]) D = int(dati["D"]) x = 2 y = 200 R=255 G=255 B=0 except: #crea la struttura del database dati["DIL"]="400"; L = int(dati["DIL"]) dati["DIA"]="400"; A = int(dati["DIA"]) dati["CFIR"]="255"; RS = int(dati["CFIR"]) dati["CFIG"]="255"; GS = int(dati["CFIG"]) dati["CFIB"]="255"; BS = int(dati["CFIB"]) dati["OIx"]="0"; OIx = int(dati["OIx"]) dati["OIy"]="400"; OIy = int(dati["OIy"]) dati["D"]="1"; D = int(dati["D"]) x = 2 y = 4 R=0 G=0 B=0 dati["EL1"]="RP2P" dati["EL1Px1"]="1" dati["EL1Px1"]="1" dati["EL1Px1"]="1" dati["EL1Px1"]="1" dati["EL2"]="CCR" img = Image.new('RGB',(L,A),color=(RS,GS,BS)) root=Tkinter.Tk() root.title("Tracciatore Equazioni") yT = Tkinter.StringVar() yT.set(y) print yT spaz_1 = Tkinter.Frame(root) spaz_1.pack(side = Tkinter.TOP,anchor=Tkinter.CENTER) Tkinter.Button(spaz_1,text= "Disegna",command=disegna).pack(side=Tkinter.LEFT) Tkinter.Button(spaz_1,text= "Cancella e disegna",command=ridisegna).pack(side=Tkinter.LEFT) Tkinter.Button(spaz_1,text= "Cancella",command=cancella).pack(side=Tkinter.LEFT) Tkinter.Button(spaz_1,text= "Termina",command=termina).pack(side=Tkinter.LEFT) Tkinter.Entry(spaz_1,text= "Altezza",textvariable=yT).pack(side=Tkinter.LEFT) Tkinter.Button(spaz_1,text= "Cosa tracciare",command=cosa_trac).pack(side=Tkinter.LEFT) spaz_2 = Tkinter.Frame(root) spaz_2.pack(side = Tkinter.TOP,fill=Tkinter.X) fines = Tkinter.Canvas(spaz_2,width=L,height=A) immag = ImageTk.PhotoImage(img) imma = fines.create_image(0,0,image=immag,anchor=Tkinter.NW) dizio["imma"] = imma dizio["fines"] = fines dizio["immag"] = immag dizio["root"] = root dizio["y"] = y dizio["img"] = img fines.pack() root.mainloop() ____________________________________________________________________________ Graf_equa.py #Converte le cordinate del sistema cartesiano in coordinate per l'immagine che conterra i tracciati delle #equazioni: #(OIx e OIy)posizione dell'origine 0 del sistema cartesiano rispetto allorigine 0 dell'immagine) #(D)fattore di ingrandimento o riduzione del tracciato def Carts_Immg(x,y,D,OIx,OIy,A,L): espx = int((x)*D+OIx) espx2 = int((x)*D+OIx-1) if (espx2 < 0): #Punto fuori dal riquadro dell'immagine (sinistra) xI = "sin_R" elif (espx2>=0 and x<0): #Punto dentro al riquadro dell'immagine (sinistra origine cartesiano) xI = espx2 elif (x>=0 and espx<=L): #Punto dentro al riquadro dell'immagine (destra origine cartesiano) xI = espx else: #Punto fuori dal riquadro dell'immagine (destra) xI ="dest_R" espy = int((-(y)*D+OIy-1)) espy2 = int(-(y)*D+OIy) if (espy<0): #Punto fuori dal riquadro dell'immagine (sopra) yI="sopr_R" elif (espy>=0 and y>=0): #Punto dentro al riquadro dell'immagine (sopra origine cartesiano) yI = espy elif (y<0 and espy2<=A): #Punto dentro al riquadro dell'immagine (sotto origine cartesiano) yI = espy2 else: #Punto fuori dal riquadro dell'immagine (sotto) yI ="sott_R" return xI,yI