def on_graficar_clicked(self): ##self.canva = MyMplCanvas() a, b, c = self.get_vars() ecuacion = Ecuacion_Cuadratica(a, b, c) ecuacion.graficar()
class Main_app: def __init__(self, master): self.main_frame = tk.Frame(master, bg='#c8c8c8') self.main_frame.grid(ipadx=2, ipady=2, padx=2, pady=2) self.ecuacion = None self.a = tk.StringVar() self.b = tk.StringVar() self.c = tk.StringVar() self.raices = tk.StringVar() self.vertice = tk.StringVar() self.factorizacion = tk.StringVar() self.reg = r'^(-?[0-9]*)([,.]?[0-9]+)$' ######CAJAS DE ENTRADA CON SUS CARTELES###### '''Etiqueta del X^2''' self.num_label = tk.Label(self.main_frame, text="X^2 + ", bg='#c8c8c8') self.num_label.grid(row=1, column=2, sticky=tk.W + tk.E) '''Caja de entrada del número a''' self.ent_a = tk.Entry(self.main_frame, width=4, textvariable=self.a, bd=2, relief=tk.GROOVE) self.ent_a.grid(row=1, column=1, sticky=tk.W + tk.E) self.ent_a.focus_set() '''Etiqueta de X''' self.base_label = tk.Label(self.main_frame, text="X +", bg='#c8c8c8') self.base_label.grid(row=1, column=4, sticky=tk.W + tk.E) '''Caja de entrada de b''' self.ent_b = tk.Entry(self.main_frame, width=4, textvariable=self.b, bd=2, relief=tk.GROOVE) self.ent_b.grid(row=1, column=3, sticky=tk.W + tk.E) '''Caja de entrada de c''' self.ent_c = tk.Entry(self.main_frame, width=4, textvariable=self.c, bd=2, relief=tk.GROOVE) self.ent_c.grid(row=1, column=5, sticky=tk.W + tk.E) ###############ETIQUETAS CON LOS RESULTADOS################ '''Etiqueta de las raices''' self.raices_label = tk.Label(self.main_frame, text='Raices :', bg='#c8c8c8') self.raices_label.grid(row=3, column=1, sticky=tk.W) self.raices_entry = tk.Entry(self.main_frame, textvariable=self.raices,bg='#c8c8c8', state='readonly') self.raices_entry.grid(row=4, column=1, columnspan=2) '''Etiqueta del vertice''' self.vertice_label = tk.Label(self.main_frame, text='Vertice :', bg='#c8c8c8') self.vertice_label.grid(row=3, column=3, sticky=tk.W) self.vertice_entry = tk.Entry(self.main_frame, textvariable=self.vertice,bg='#c8c8c8', state='readonly') self.vertice_entry.grid(row=4, column=3, columnspan=2) '''Etiqueta de la factorizacion''' self.factorizacion_label = tk.Label(self.main_frame, text='Factorizacion :', bg='#c8c8c8') self.factorizacion_label.grid(row=5, column=1, sticky=tk.W) self.factorizacion_entry = tk.Entry(self.main_frame, textvariable=self.factorizacion, bg='#c8c8c8', state='readonly') self.factorizacion_entry.grid(row=5, column=2, columnspan=2) ###########BOTONES############ '''Boton para graficar''' self.btn_graficar = tk.Button(self.main_frame, text="Graficar", command=self.graficar, relief=tk.FLAT, bg='#c8c8c8', bd=0) self.btn_graficar.grid(row=2, column=2, sticky=tk.W + tk.E) '''Boton para limpiar los resultados''' self.btn_limpiar = tk.Button(self.main_frame, text="Limpiar", command=self.clean, relief=tk.FLAT, bg='#c8c8c8', bd=0) self.btn_limpiar.grid(row=2, column=3, sticky=tk.W + tk.E) '''Boton para hacer los calculos''' self.btn_raices = tk.Button(self.main_frame, text="Calcular", command=self.calcular, relief=tk.FLAT, bg='#c8c8c8', bd=0) self.btn_raices.grid(row=2, column=1, sticky=tk.W + tk.E) '''Boton para salir''' self.btn_raices = tk.Button(self.main_frame, text="Salir", command=quit, relief=tk.FLAT, bg='#c8c8c8', bd=0) self.btn_raices.grid(row=2, column=4, columnspan=2, sticky=tk.W + tk.E) # Metodos def clean(self): ''' Función para limpiar todos los campos ''' self.a.set('') self.b.set('') self.c.set('') self.raices.set('') self.vertice.set('') self.factorizacion.set('') self.ent_a.focus_set() def graficar(self): '''Función para graficar''' a = self.a.get() b = self.b.get() c = self.c.get() self.ecuacion = Ecuacion_Cuadratica(a, b, c) self.ecuacion.graficar() def analizar_entrada(self, a, b, c): '''Funcion que analiza la entrada y la valida''' re_a = re.match(self.reg, a) re_b = re.match(self.reg, b) re_c = re.match(self.reg, c) if re_a and re_b and re_c: return True else: return False def calcular(self): '''Funcion que calcula y muestra las raices, el vertice y y la ecuación factorizada''' a = self.a.get() b = self.b.get() c = self.c.get() if self.analizar_entrada(a, b, c): self.ecuacion = Ecuacion_Cuadratica(a, b, c) self.raices.set(self.ecuacion.resolver_ecuacion()) self.vertice.set(self.ecuacion.vertice()) self.factorizacion.set(self.ecuacion.ecuacion_factorizada()) else: mensaje = 'Algún valor está mal escrito, solo pueden ser números' showerror(title='Error', message=mensaje)