Correzione PEP8

This commit is contained in:
Rnhmjoj 2013-08-25 20:38:59 +02:00
parent 979c2ac7eb
commit 2be4ad8d46
2 changed files with 110 additions and 99 deletions

View File

@ -4,6 +4,7 @@ import re
#import canvas2svg #import canvas2svg
import grafico import grafico
class Applicazione(tkinter.Frame): class Applicazione(tkinter.Frame):
""" """
Classe dell'applicazione Classe dell'applicazione
@ -11,47 +12,47 @@ class Applicazione(tkinter.Frame):
""" """
def __init__(self, finestra): def __init__(self, finestra):
tkinter.Frame.__init__(self, finestra) tkinter.Frame.__init__(self, finestra)
#Impostazioni della finestra #Impostazioni della finestra
finestra.title("Impostazioni") finestra.title("Impostazioni")
finestra.resizable(0,0) finestra.resizable(0, 0)
finestra.geometry("{}x{}+{}+{}".format( finestra.geometry("{}x{}+{}+{}".format(
645, 110, 645, 110,
int((finestra.winfo_screenwidth() / 2) - 320), int((finestra.winfo_screenwidth() / 2) - 320),
finestra.winfo_screenheight() finestra.winfo_screenheight()
)) ))
#Variabili #Variabili
self.tipo = tkinter.StringVar() self.tipo = tkinter.StringVar()
self.testo = tkinter.StringVar() self.testo = tkinter.StringVar()
self.tipo.set("normale") self.tipo.set("normale")
self.grafico = grafico.Grafico(20,20) self.grafico = grafico.Grafico(20, 20)
self.frame = self.grafico.frame self.frame = self.grafico.frame
self.widgets() self.widgets()
self.scritta() self.scritta()
def widgets(self): def widgets(self):
""" """
Creare e disegna i widget della finestra. Creare e disegna i widget della finestra.
""" """
#Etichette #Etichette
self.label1 = tkinter.Label( self.label1 = tkinter.Label(
finestra, finestra,
textvariable=self.testo textvariable=self.testo
) )
self.label2 = tkinter.Label( self.label2 = tkinter.Label(
finestra, finestra,
text="Intervallo:" text="Intervallo:"
) )
self.label3 = tkinter.Label( self.label3 = tkinter.Label(
finestra, finestra,
text="Colore:" text="Colore:"
) )
#Caselle di testo #Caselle di testo
self.casella1 = tkinter.Entry(finestra) self.casella1 = tkinter.Entry(finestra)
@ -61,122 +62,125 @@ class Applicazione(tkinter.Frame):
#Opzioni #Opzioni
self.scelta1 = tkinter.Radiobutton( self.scelta1 = tkinter.Radiobutton(
finestra, finestra,
value="normale", value="normale",
text="Normale", text="Normale",
variable=self.tipo, variable=self.tipo,
command=self.scritta command=self.scritta
) )
self.scelta2 = tkinter.Radiobutton( self.scelta2 = tkinter.Radiobutton(
finestra, finestra,
value="punti", value="punti",
text="Definita a punti", text="Definita a punti",
variable=self.tipo, variable=self.tipo,
command=self.scritta command=self.scritta
) )
self.scelta3 = tkinter.Radiobutton(finestra, self.scelta3 = tkinter.Radiobutton(
value="tratti", finestra,
text="Definita a tratti", value="tratti",
variable=self.tipo, text="Definita a tratti",
variable=self.tipo,
command=self.scritta command=self.scritta
) )
#Pulsanti #Pulsanti
self.pulsante1 = tkinter.Button( self.pulsante1 = tkinter.Button(
finestra, finestra,
text="Disegna", text="Disegna",
command=self.disegna command=self.disegna
) )
self.pulsante2 = tkinter.Button(finestra, self.pulsante2 = tkinter.Button(
text="Cancella", finestra,
text="Cancella",
command=self.vuota command=self.vuota
) )
self.pulsante3 = tkinter.Button( self.pulsante3 = tkinter.Button(
finestra, finestra,
text="Pulisci Canvas", text="Pulisci Canvas",
command=self.grafico.pulisci command=self.grafico.pulisci
) )
self.pulsante4 = tkinter.Button(finestra, self.pulsante4 = tkinter.Button(
text="Salva", finestra,
text="Salva",
command=self.salva command=self.salva
) )
self.pulsante5 = tkinter.Button( self.pulsante5 = tkinter.Button(
finestra, finestra,
text="Esci", text="Esci",
command=finestra.quit command=finestra.quit
) )
#Layout dei widgets #Layout dei widgets
self.label1.grid( self.label1.grid(
column=0, row=0, column=0, row=0,
sticky="nw", sticky="nw",
pady=5, padx=5 pady=5, padx=5
) )
self.label2.grid( self.label2.grid(
column=0, row=1, column=0, row=1,
sticky="nw", sticky="nw",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.label3.grid( self.label3.grid(
column=0, row=2, column=0, row=2,
sticky="nw", sticky="nw",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.casella1.grid( self.casella1.grid(
column=1, row=0, column=1, row=0,
sticky="nw", sticky="nw",
pady=5, padx=5 pady=5, padx=5
) )
self.casella2.grid( self.casella2.grid(
column=1, row=1, column=1, row=1,
sticky="nw", sticky="nw",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.casella3.grid( self.casella3.grid(
column=1, row=2, column=1, row=2,
padx=5, pady=2.5 padx=5, pady=2.5
) )
self.scelta1.grid( self.scelta1.grid(
column= 2, row=1, column=2, row=1,
sticky="nw", sticky="nw",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.scelta2.grid( self.scelta2.grid(
column= 3, row=1, column=3, row=1,
sticky="nw", sticky="nw",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.scelta3.grid( self.scelta3.grid(
column= 4, row=1, column=4, row=1,
sticky="nw", sticky="nw",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.pulsante1.grid( self.pulsante1.grid(
column= 2, row=0, column=2, row=0,
sticky="nwes", sticky="nwes",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.pulsante2.grid( self.pulsante2.grid(
column= 3, row=0, column=3, row=0,
sticky="nwes", sticky="nwes",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.pulsante3.grid( self.pulsante3.grid(
column=4, row=0, column=4, row=0,
sticky="nwes", sticky="nwes",
pady=2.5, padx=5 pady=2.5, padx=5
) )
self.pulsante4.grid( self.pulsante4.grid(
column=2, row=2, column=2, row=2,
sticky="nwes", sticky="nwes",
pady=2.5, padx=5, pady=2.5, padx=5,
columnspan=2 columnspan=2
) )
self.pulsante5.grid( self.pulsante5.grid(
column=4, row=2, column=4, row=2,
sticky="nwes", sticky="nwes",
pady=2.5, padx=5 pady=2.5, padx=5
) )
@ -188,18 +192,18 @@ class Applicazione(tkinter.Frame):
self.testo.set("f(x): y =") self.testo.set("f(x): y =")
elif self.tipo.get() == "tratti": elif self.tipo.get() == "tratti":
self.testo.set("[f1(x),(intervallo)],[f2(x),(intervallo)],...") self.testo.set("[f1(x),(intervallo)],[f2(x),(intervallo)],...")
else: else:
self.testo.set("(x1,y1),(x2,y2),...") self.testo.set("(x1,y1),(x2,y2),...")
def disegna(self): def disegna(self):
""" """
Disegna il grafico della funzione o dei dati inseriti Disegna il grafico della funzione o dei dati inseriti
""" """
#Converte la funzione in modo che possa essere interpretata da eval(). #Converte la funzione in modo che possa essere interpretata da eval().
funzione = re.sub( funzione = re.sub(
"([\+-\-]?\d+)(x)", "([\+-\-]?\d+)(x)",
"\\1*x", "\\1*x",
self.casella1.get().replace("^", "**") self.casella1.get().replace("^", "**")
) )
funzione = re.sub( funzione = re.sub(
@ -208,33 +212,33 @@ class Applicazione(tkinter.Frame):
funzione funzione
) )
funzione = re.sub( funzione = re.sub(
"(.+)(\!)", "(.+)(\!)",
"factorial(\\1)", "factorial(\\1)",
funzione funzione
) )
#Legge l'intervallo inserito. #Legge l'intervallo inserito.
try: try:
intervallo = eval(self.casella2.get()) intervallo = eval(self.casella2.get())
except SyntaxError: except SyntaxError:
inizio = -self.grafico.X inizio = -self.grafico.X
fine = self.grafico.X fine = self.grafico.X
else: else:
inizio = float(intervallo[0]) inizio = float(intervallo[0])
fine = float(intervallo[1]) fine = float(intervallo[1])
#Legge il colore inserito. #Legge il colore inserito.
colore = self.casella3.get() colore = self.casella3.get()
if colore == "": if colore == "":
colore = "orange" colore = "orange"
#Disegna il grafico in base al tipo inserito. #Disegna il grafico in base al tipo inserito.
if self.tipo.get() == "normale": if self.tipo.get() == "normale":
funzione = eval("lambda x:" + funzione) funzione = eval("lambda x:" + funzione)
self.grafico.disegna(funzione, inizio, fine, colore) self.grafico.disegna(funzione, inizio, fine, colore)
elif self.tipo.get() == "tratti": elif self.tipo.get() == "tratti":
funzioni = re.sub("(\[\()(.+?\))", "\\1lambda x:\\2", funzione) funzioni = re.sub("(\[\()(.+?\))", "\\1lambda x:\\2", funzione)
funzioni = re.sub("(\[)", "(", funzioni.replace("]",")")) funzioni = re.sub("(\[)", "(", funzioni.replace("]", ")"))
for funzione in eval(funzioni): for funzione in eval(funzioni):
self.grafico.disegna( self.grafico.disegna(
funzione[0], funzione[0],
@ -245,12 +249,12 @@ class Applicazione(tkinter.Frame):
else: else:
funzione = grafico.punti(eval(self.casella1.get())) funzione = grafico.punti(eval(self.casella1.get()))
self.grafico.disegna( self.grafico.disegna(
funzione, funzione,
punti[0][0], punti[0][0],
punti[len(punti)-1][1], punti[len(punti) - 1][1],
colore colore
) )
def vuota(self): def vuota(self):
""" """
Rimuove tutti i dati inseriti. Rimuove tutti i dati inseriti.
@ -259,20 +263,20 @@ class Applicazione(tkinter.Frame):
self.casella2.delete(0, "end") self.casella2.delete(0, "end")
self.casella3.delete(0, "end") self.casella3.delete(0, "end")
self.finestra.withdraw() self.finestra.withdraw()
def salva(self): def salva(self):
""" """
Salva il grafico in formato svg. Salva il grafico in formato svg.
""" """
opzioni ={ opzioni = {
"parent": self.frame, "parent": self.frame,
"defaultextension": ".svg", "defaultextension": ".svg",
"initialfile": "grafico.svg", "initialfile": "grafico.svg",
"title": "Salva il grafico" "title": "Salva il grafico"
} }
file = tkinter.filedialog.asksaveasfilename(**opzioni) file = tkinter.filedialog.asksaveasfilename(**opzioni)
canvas2svg.saveall(file, self.grafico.canvas) canvas2svg.saveall(file, self.grafico.canvas)
finestra = tkinter.Tk() finestra = tkinter.Tk()
app = Applicazione(finestra) app = Applicazione(finestra)
app.mainloop() app.mainloop()

View File

@ -1,5 +1,6 @@
import turtle import turtle
def punti(tupla): def punti(tupla):
""" """
Data una tupla del tipo ((x_1, y_1), (x_2, y_2), (x_n, y_n),...) Data una tupla del tipo ((x_1, y_1), (x_2, y_2), (x_n, y_n),...)
@ -7,6 +8,7 @@ def punti(tupla):
""" """
return lambda x: dict(tupla)[float(x)] return lambda x: dict(tupla)[float(x)]
class Varie(): class Varie():
""" """
Funzioni varie per turtle. Funzioni varie per turtle.
@ -15,10 +17,11 @@ class Varie():
""" """
Sposta il cursore al punto (x, y) senza tracciare una linea. Sposta il cursore al punto (x, y) senza tracciare una linea.
""" """
self.pu() self.pu()
self.goto(x,y) self.goto(x, y)
self.pd() self.pd()
class Freccia(turtle.Pen, Varie): class Freccia(turtle.Pen, Varie):
""" """
Cursore di turtle personalizzato. Cursore di turtle personalizzato.
@ -29,8 +32,9 @@ class Freccia(turtle.Pen, Varie):
self.shape("triangle") self.shape("triangle")
self.shapesize(0.5) self.shapesize(0.5)
class Grafico(turtle.Pen, Varie): class Grafico(turtle.Pen, Varie):
def __init__(self, X=10, Y=10): def __init__(self, X=10, Y=10):
""" """
Inizializzazione del grafico Inizializzazione del grafico
@ -44,52 +48,55 @@ class Grafico(turtle.Pen, Varie):
self.frame = turtle._Screen._root self.frame = turtle._Screen._root
self.assi() self.assi()
self.frecce() self.frecce()
def assi(self): def assi(self):
""" """
Disegna gli assi del piano cartesiano. Disegna gli assi del piano cartesiano.
""" """
turtle.setworldcoordinates(-(self.X+2), -(self.Y+2), self.X+2, self.Y+2) turtle.setworldcoordinates(
-(self.X + 2), -(self.Y + 2),
self.X + 2, self.Y + 2
)
self.hideturtle() self.hideturtle()
self.speed(0) self.speed(0)
self.vai(-self.X, 0) self.vai(-self.X, 0)
self.fd(self.X*2) self.fd(self.X * 2)
self.vai(0, -self.Y) self.vai(0, -self.Y)
self.lt(90) self.lt(90)
self.fd(self.Y*2) self.fd(self.Y * 2)
def frecce(self): def frecce(self):
""" """
Disegna le frecce e i nomi degli assi. Disegna le frecce e i nomi degli assi.
""" """
a = Freccia() a = Freccia()
a.vai(self.X, 0) a.vai(self.X, 0)
a.write(" x", font=("helvetiva",16)) a.write(" x", font=("helvetiva", 16))
b = Freccia() b = Freccia()
b.lt(90) b.lt(90)
b.vai(0, self.Y) b.vai(0, self.Y)
b.write(" y", font=("helvetiva",16)) b.write(" y", font=("helvetiva", 16))
def disegna(self, funzione, inizio, fine, colore="blue"): def disegna(self, funzione, inizio, fine, colore="blue"):
""" """
Disegna una funzione nel piano cartesiano. Disegna una funzione nel piano cartesiano.
""" """
medio = 2/self.X medio = 2 / self.X
self.color(colore) self.color(colore)
try: try:
self.vai(inizio,funzione(inizio)) self.vai(inizio, funzione(inizio))
except ZeroDivisionError: except ZeroDivisionError:
self.vai(inizio,funzione(inizio+1*medio)) self.vai(inizio, funzione(inizio + 1 * medio))
for x in range(int(inizio/medio),int(fine/medio)+1): for x in range(int(inizio / medio), int(fine / medio) + 1):
x *= medio x *= medio
try: try:
self.goto(x, funzione(x)) self.goto(x, funzione(x))
except ZeroDivisionError: except ZeroDivisionError:
self.vai(x, funzione(x+1*medio)) self.vai(x, funzione(x + 1 * medio))
def pulisci(self): def pulisci(self):
""" """
Pulisce il canvas e ridisegna gli assi. Pulisce il canvas e ridisegna gli assi.
""" """
self.reset() self.reset()
self.assi() self.assi()