En el post anterior (16/abril) publicamos el código para la resolucion de ecuaciones de segundo grado en python 3.x. Partiendo de este código anterior desarrollamos una aplicacion con interfaz de usuario, usando la librería tkinter, en nuestro intento por aprender programacion en python 3.3. El código queda como sigue.
## graficador de la funciones
from tkinter import*
from tkinter import messagebox
import matplotlib.pyplot as plt
import numpy as np
ventana = Frame(height = 400, width = 400)
ventana.pack(padx = 10, pady = 10)
### Declarando Variables
a = DoubleVar()
b = DoubleVar()
c= DoubleVar()
restx1 = StringVar()
restx2 = StringVar()
#Declarando funciones
### funcion graficar
def graficar():
a = aA.get()
b = bB.get()
c = cC.get()
ax = float(a)
bx = float(b)
cx = float (c)
x = np.arange(-10,10,0.5)
y = ax*x**2 + bx*x + cx
plt.plot(x,y)
plt.title('a*x^2 + b*x + c = 0')
plt.xlabel('X')
plt.ylabel('Y')
plt.show()
##termina funcion graficar
### inica funcion calcular
def calcular():
a = aA.get()
b = bB.get()
c = cC.get()
ax = float(a)
bx = float(b)
cx = float (c)
## calculando Delta
delta = float(bx**2-4*ax*cx)
if delta<0:
messagebox.showerror('Eror', 'No hay solucion')
elif delta ==0:
s == float(-bx/2*ax)
messagebox.showinfo('resultado','Solucion unica ', s)
else:
resultado = Label(ventana, text =
"Resultado")
resultado.place(bordermode = OUTSIDE, height = 30, width= 100, x = 150, y= 250)
resultado1 = Label(ventana, text =
"X1")
resultado1.place(bordermode = OUTSIDE, height = 30, width= 50, x = 180, y= 280)
resultado2 = Label(ventana, text =
"X2")
resultado2.place(bordermode = OUTSIDE, height = 30, width= 50, x = 180, y= 310)
x1 = float((-bx+((bx**2 - 4*ax*cx))**0.5)/(2*ax))
x2 = float((-bx-((bx**2 - 4*ax*cx))**0.5)/(2*ax))
r1 = Label(ventana,textvariable = restx1)
r1.place(bordermode = OUTSIDE, height = 30, width= 50, x = 230, y= 280)
restx1.set(x1)
r2 = Label(ventana,textvariable = restx2)
r2.place(bordermode = OUTSIDE, height = 30, width= 50, x = 230, y= 310)
restx2.set(x2)
##iniciando maquetado de interfaz
aA = Entry(ventana, textvariable = a)
aA.place(bordermode = OUTSIDE, height = 30, width = 50, x = 10, y = 40)
bB = Entry (ventana, textvariable = b)
bB.place(bordermode = OUTSIDE, height = 30, width = 50, x = 130, y = 40)
cC = Entry(ventana, textvariable = c)
cC.place(bordermode = OUTSIDE, height = 30, width = 50, x = 230, y = 40)
## entrada de TExto
xa = Label(ventana, text = "X^2 + ")
xa.place(bordermode = OUTSIDE, height = 30, width = 50, x =70,y=40 )
xb = Label(ventana, text = "X + ")
xb.place(bordermode = OUTSIDE, height = 30, width = 50, x = 180, y = 40)
xc = Label(ventana, text = "= 0 ")
xc.place(bordermode = OUTSIDE, height = 30, width = 50, x=280, y = 40)
### boton de graficar
graficar = Button ( ventana, text = "Graficar", command = graficar)
graficar.place(bordermode= OUTSIDE, height= 40, width = 100, x = 40, y = 200)
## boton calcular
calcular = Button (ventana, text = "Calcular", command = calcular)
calcular.place(bordermode = OUTSIDE, height = 40, width = 100, x = 160, y = 200)
## terminado el maquetetado de la GUI
ventana.mainloop()
Nuestro codigo ha crecido en gran manera, en el post anterios solo eran aproximadamente 30 lineas y en este momento tenemos un total de 100 lineas de codigo ptyhon 3.3. La apliacion queda de la siguiente manera.
Compara la cantidad de codigo Python vs la cantida de Codigo Matlab, ¿Cual crees que es mas conveniente?, ¿Cual se te hace mas facil?, ¿Cual te enseñan en la facultad de ingenieria? Tu tienes la unica respuesta si deseas aprender python.