-
Notifications
You must be signed in to change notification settings - Fork 0
/
Copy pathHelpers.py
91 lines (48 loc) · 2.3 KB
/
Helpers.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
import tkinter as tk
from defcalculos import preprocesar_funcion
from graficar import mostrar_grafico
import sympy as sp
def boton_check(frame, app):
'''
Genera el botón de calcular
'''
button_frame = tk.Frame(frame, bg= '#1C646D')
button_frame.pack(pady=5, padx=5)
boton_calcular = tk.Button(button_frame,text="Calcular", width=10, height=2)
boton_calcular.pack(side='left', padx=10)
boton_calcular.config(command=lambda: prueba(frame, app))
return boton_calcular, button_frame
def prueba(frame, app):
'''
Función específica para trabajar con las herramientas de cálculo diferencial, ya que las operaciones aritméticas las maneja eval (lamentablemente).
'''
try:
textoUser = mostrar_entry(frame)
funcion_string = preprocesar_funcion(textoUser.get())
funcion = sp.sympify(funcion_string)
if app.get_opcion_var().get() == "Derivación":
resultado = sp.diff(funcion, sp.Symbol('x'))
elif app.get_opcion_var().get() == "Integración":
resultado = sp.integrate(funcion, sp.Symbol('x'))
else:
resultado = "Operación no soportada para gráficos."
resultado_calculo(app.get_dinamico_frame(), app, resultado)
except Exception as e:
resultado_calculo(app.get_dinamico_frame(), app, f"Error: {str(e)}")
def mostrar_entry(frame):
'''
Muestra el input "Entry" en este caso.
'''
textoUser = tk.Entry(frame, width=25)
textoUser.pack(pady=10, padx=10)
return textoUser
def resultado_calculo(button_frame, app, resultado=None): # te muestra el texto del resultado
if hasattr(app, 'resultado_label') and app.resultado_label is not None and app.resultado_label.winfo_exists():
if resultado is not None:
app.resultado_label.config(text=f"El resultado es: {resultado}")#user
else:
if resultado is not None:
app.resultado_label = tk.Label(button_frame, bg='#1C646D',fg='white' ,text=f"El resultado es: {resultado}")#user
app.resultado_label.pack(pady=10)
else:
print("Label existente, pero no se proporcionó un resultado") # debug