From 182db01101ed891398add35282e4251f5ef994ce Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 7 Nov 2025 19:19:42 -0400 Subject: [PATCH 01/25] =?UTF-8?q?feat:=20ajustar=20dise=C3=B1o=20segun=20s?= =?UTF-8?q?elecci=C3=B3n=20del=20equipo?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 15 ++++++++------- 1 file changed, 8 insertions(+), 7 deletions(-) diff --git a/gui.py b/gui.py index 10d8d15..e89bf58 100644 --- a/gui.py +++ b/gui.py @@ -25,24 +25,25 @@ def create_widgets(self): relief='sunken', bd=3 ) - self.display.grid(row=0, column=0, columnspan=4, sticky='nsew', padx=5, pady=5) + self.display.grid(row=0, column=0, columnspan=4, sticky='nsew', padx=6, pady=6) # Estilo para los botones style = ttk.Style() # Un estilo simple para todos los botones style.configure('Calculator.TButton', font=('Arial', 14), - padding=5) + padding=6) # Definir botones y su posición buttons = [ # Fila 1 - ('C', 1, 0), ('abs', 1, 1), ('max', 1, 2), ('min', 1, 3), + ('C', 1, 0), ('(', 1, 1), (')', 1, 2), ('⌫', 1, 3), # Fila 2-5 - ('7', 2, 0), ('8', 2, 1), ('9', 2, 2), ('/', 2, 3), - ('4', 3, 0), ('5', 3, 1), ('6', 3, 2), ('*', 3, 3), - ('1', 4, 0), ('2', 4, 1), ('3', 4, 2), ('-', 4, 3), - ('0', 5, 0), ('.', 5, 1), ('=', 5, 2), ('+', 5, 3) + ('max', 2, 0), ('min', 2, 1), ('abs', 2, 2), ('/', 2, 3), + ('7', 3, 0), ('8', 3, 1), ('9', 3, 2), ('*', 3, 3), + ('4', 4, 0), ('5', 4, 1), ('6', 4, 2), ('-', 4, 3), + ('1', 5, 0), ('2', 5, 1), ('3', 5, 2), ('+', 5, 3), + ('^', 6, 0), ('0', 6, 1), ('.', 6, 2), ('=', 6, 3) ] # Crear y posicionar botones From b40fa241a5f9ab806af253107b0b567bbf51eda8 Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 8 Nov 2025 22:57:45 -0400 Subject: [PATCH 02/25] feat: actualizar colores en gui.py --- gui.py | 141 ++++++++++++++++++++++++++++++--------------------------- 1 file changed, 74 insertions(+), 67 deletions(-) diff --git a/gui.py b/gui.py index 10d8d15..3775611 100644 --- a/gui.py +++ b/gui.py @@ -1,90 +1,97 @@ import tkinter as tk -from tkinter import ttk class CalculatorGUI: def __init__(self, root): self.root = root self.root.title("Calculadora") - self.root.geometry("320x400") - - # Estado - self.current_value = "" - self.operator = None - self.first_number = None - - # UI + self.root.geometry("330x420") + self.root.configure(bg="#1E1E1E") # Fondo más elegante + self.create_widgets() - + def create_widgets(self): - # Display + + COLORS = { + "bg": "#1E1E1E", + "display": "#2B2B2B", + "numbers": "#3A3A3A", + "operators": "#FF8C00", # naranja más suave (Apple) + "equal": "#FF8C00", + "clear": "#6E6E6E", + "text": "#FFFFFF" + } + + # ==== DISPLAY ==== self.display = tk.Entry( self.root, - font=('Arial', 24), - justify='right', - bg='white', - relief='sunken', - bd=3 + font=("Arial", 28, "bold"), + justify="right", + bg=COLORS["display"], + fg=COLORS["text"], + relief="flat", + bd=10 ) - self.display.grid(row=0, column=0, columnspan=4, sticky='nsew', padx=5, pady=5) - - # Estilo para los botones - style = ttk.Style() - # Un estilo simple para todos los botones - style.configure('Calculator.TButton', - font=('Arial', 14), - padding=5) - - # Definir botones y su posición + self.display.grid(row=0, column=0, columnspan=4, + sticky="nsew", padx=10, pady=10) + + # ==== BOTONES ==== buttons = [ - # Fila 1 - ('C', 1, 0), ('abs', 1, 1), ('max', 1, 2), ('min', 1, 3), - # Fila 2-5 - ('7', 2, 0), ('8', 2, 1), ('9', 2, 2), ('/', 2, 3), - ('4', 3, 0), ('5', 3, 1), ('6', 3, 2), ('*', 3, 3), - ('1', 4, 0), ('2', 4, 1), ('3', 4, 2), ('-', 4, 3), - ('0', 5, 0), ('.', 5, 1), ('=', 5, 2), ('+', 5, 3) + ('C', 1, 0, COLORS["clear"]), + ('(', 1, 1, COLORS["numbers"]), + (')', 1, 2, COLORS["numbers"]), + ('⌫', 1, 3, COLORS["clear"]), + + ('max', 2, 0, COLORS["numbers"]), + ('min', 2, 1, COLORS["numbers"]), + ('abs', 2, 2, COLORS["numbers"]), + ('/', 2, 3, COLORS["operators"]), + + ('7', 3, 0, COLORS["numbers"]), + ('8', 3, 1, COLORS["numbers"]), + ('9', 3, 2, COLORS["numbers"]), + ('*', 3, 3, COLORS["operators"]), + + ('4', 4, 0, COLORS["numbers"]), + ('5', 4, 1, COLORS["numbers"]), + ('6', 4, 2, COLORS["numbers"]), + ('-', 4, 3, COLORS["operators"]), + + ('1', 5, 0, COLORS["numbers"]), + ('2', 5, 1, COLORS["numbers"]), + ('3', 5, 2, COLORS["numbers"]), + ('+', 5, 3, COLORS["operators"]), + + ('^', 6, 0, COLORS["operators"]), + ('0', 6, 1, COLORS["numbers"]), + ('.', 6, 2, COLORS["numbers"]), + ('=', 6, 3, COLORS["equal"]), ] - - # Crear y posicionar botones - for (text, row, col) in buttons: - btn = ttk.Button( + + for (txt, r, c, color) in buttons: + tk.Button( self.root, - text=text, - style='Calculator.TButton' - ) - btn.grid(row=row, column=col, padx=2, pady=2, sticky='nsew') - - # Configurar expansión de grid - for i in range(6): # 6 filas + text=txt, + bg=color, + fg=COLORS["text"], + font=("Arial", 16, "bold"), + relief="flat", + bd=0, + activebackground=color, + activeforeground=COLORS["text"], + highlightthickness=0 + ).grid(row=r, column=c, padx=4, pady=4, sticky="nsew") + + # Expandir filas y columnas + for i in range(7): self.root.grid_rowconfigure(i, weight=1) - for i in range(4): # 4 columnas - self.root.grid_columnconfigure(i, weight=1) - - # Configurar expansión del root - self.root.grid_rowconfigure(1, weight=1) for i in range(4): self.root.grid_columnconfigure(i, weight=1) - - def button_click(self, value): - """Maneja clicks de botones numéricos""" - pass - - def operation_click(self, op): - """Maneja clicks de operadores""" - pass - - def equals_click(self): - """Calcula resultado usando calculator.py""" - pass - - def clear_click(self): - """Limpia display""" - pass + def main(): root = tk.Tk() - app = CalculatorGUI(root) + CalculatorGUI(root) root.mainloop() if __name__ == "__main__": - main() \ No newline at end of file + main() From b3da5695d2ba1131223617ef7ad65b344418816d Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 10 Nov 2025 10:49:06 -0400 Subject: [PATCH 03/25] feat: actualizar colores en gui.py --- gui.py | 28 +++++++++++++++++++++++++++- 1 file changed, 27 insertions(+), 1 deletion(-) diff --git a/gui.py b/gui.py index 3775611..b8e5016 100644 --- a/gui.py +++ b/gui.py @@ -6,6 +6,12 @@ def __init__(self, root): self.root.title("Calculadora") self.root.geometry("330x420") self.root.configure(bg="#1E1E1E") # Fondo más elegante + # Estado + self.current_value = " " + self.operator = None + self.first_number = None + + # Interfaz de usuario self.create_widgets() @@ -87,10 +93,30 @@ def create_widgets(self): for i in range(4): self.root.grid_columnconfigure(i, weight=1) + def botón_clic ( self , valor ): + """Maneja clicks de botones numéricos""" + pass + + + def operación_clic ( self , op ): + """Maneja clics de operadores""" + pass + + + def equals_click ( self ): + """Calcula el resultado usando calculadora.py""" + pass + + + def clear_click ( self ): + """Exhibición de Limpia""" + pass + + def main(): root = tk.Tk() - CalculatorGUI(root) + app = CalculatorGUI(root) root.mainloop() if __name__ == "__main__": From c776d643746b1b7b33a6fdb1f1a81e9594171796 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Tue, 11 Nov 2025 18:20:38 -0400 Subject: [PATCH 04/25] feat: Implementar logica de backend para botones numericos --- gui.py | 29 ++++++++++++++++++++++++++--- 1 file changed, 26 insertions(+), 3 deletions(-) diff --git a/gui.py b/gui.py index b8e5016..094c6da 100644 --- a/gui.py +++ b/gui.py @@ -1,4 +1,5 @@ import tkinter as tk +from tkinter import ttk class CalculatorGUI: def __init__(self, root): @@ -93,9 +94,31 @@ def create_widgets(self): for i in range(4): self.root.grid_columnconfigure(i, weight=1) - def botón_clic ( self , valor ): - """Maneja clicks de botones numéricos""" - pass + #Conectar botones a funciones + for (text, row, col, color) in buttons: + if text.isdigit(): + btn = ttk.Button( + self.root, + text=text, + style='Calculator.TButton', + command=lambda t=text: self.number_button_click(t) + ) + btn.grid(row=row, column=col, padx=2, pady=2, sticky='nsew') + + + def number_button_click ( self , valor ): + """Maneja clicks de botones numéricos. + + Args: + value (str): Dígito presionado (0-9) + + Examples: + >>> # Usuario presiona 2, 3, 5 + >>> # Display muestra: "235" + """ + self.current_value += str(valor) + self.display.delete(0, tk.END) + self.display.insert(0, self.current_value) def operación_clic ( self , op ): From 92a9fd3ee92d2b510f7f8293fa96299349e7bbbc Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Tue, 11 Nov 2025 22:39:34 -0400 Subject: [PATCH 05/25] =?UTF-8?q?fix:=20correcci=C3=B3n=20en=20el=20duplic?= =?UTF-8?q?ado=20al=20crear=20los=20botones=20numericos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 27 ++++++++++++--------------- 1 file changed, 12 insertions(+), 15 deletions(-) diff --git a/gui.py b/gui.py index 094c6da..8235c95 100644 --- a/gui.py +++ b/gui.py @@ -7,13 +7,13 @@ def __init__(self, root): self.root.title("Calculadora") self.root.geometry("330x420") self.root.configure(bg="#1E1E1E") # Fondo más elegante - # Estado - self.current_value = " " + + # Estado + self.current_value = "" self.operator = None self.first_number = None # Interfaz de usuario - self.create_widgets() def create_widgets(self): @@ -75,6 +75,12 @@ def create_widgets(self): ] for (txt, r, c, color) in buttons: + # Conectar solo botones numéricos + if txt.isdigit(): + cmd = lambda t=txt: self.number_button_click(t) + else: + cmd = None # Por ahora, otros botones sin funcionalidad + tk.Button( self.root, text=txt, @@ -85,25 +91,16 @@ def create_widgets(self): bd=0, activebackground=color, activeforeground=COLORS["text"], - highlightthickness=0 + highlightthickness=0, + command=cmd ).grid(row=r, column=c, padx=4, pady=4, sticky="nsew") + # Expandir filas y columnas for i in range(7): self.root.grid_rowconfigure(i, weight=1) for i in range(4): self.root.grid_columnconfigure(i, weight=1) - - #Conectar botones a funciones - for (text, row, col, color) in buttons: - if text.isdigit(): - btn = ttk.Button( - self.root, - text=text, - style='Calculator.TButton', - command=lambda t=text: self.number_button_click(t) - ) - btn.grid(row=row, column=col, padx=2, pady=2, sticky='nsew') def number_button_click ( self , valor ): From fb4560c36ff1b267d60a8267e16a5c30a273b1a7 Mon Sep 17 00:00:00 2001 From: Alex Date: Thu, 13 Nov 2025 21:37:24 -0400 Subject: [PATCH 06/25] =?UTF-8?q?feat:=20agregar=20funcionalidad=20al=20bo?= =?UTF-8?q?t=C3=B3n=20decimal?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 19 +++++++++++++++++++ 1 file changed, 19 insertions(+) diff --git a/gui.py b/gui.py index 8235c95..cf60227 100644 --- a/gui.py +++ b/gui.py @@ -78,6 +78,8 @@ def create_widgets(self): # Conectar solo botones numéricos if txt.isdigit(): cmd = lambda t=txt: self.number_button_click(t) + elif txt == '.': + cmd = self.decimal_click else: cmd = None # Por ahora, otros botones sin funcionalidad @@ -116,6 +118,23 @@ def number_button_click ( self , valor ): self.current_value += str(valor) self.display.delete(0, tk.END) self.display.insert(0, self.current_value) + + def decimal_click(self): + """Maneja click del botón decimal. + + Agrega un punto decimal solo si no existe uno ya en el número actual. + + Examples: + >>> "5" → click(.) → "5." + >>> "5." → click(.) → "5." (no cambia) + >>> "" → click(.) → "0." + """ + if '.' not in self.current_value: + if not self.current_value: + self.current_value = "0" + self.current_value += '.' + self.display.delete(0, tk.END) + self.display.insert(0, self.current_value) def operación_clic ( self , op ): From b54bf5980df3869a6292a766cba701b01468b883 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Sun, 16 Nov 2025 09:50:06 -0400 Subject: [PATCH 07/25] feat(core): Implementar logica de operaciones matematicas (+, -, *, /) y boton igual --- gui.py | 88 ++++++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 76 insertions(+), 12 deletions(-) diff --git a/gui.py b/gui.py index cf60227..bf63461 100644 --- a/gui.py +++ b/gui.py @@ -1,5 +1,8 @@ import tkinter as tk -from tkinter import ttk +from calculator import ( + add, subtract, multiply, divide, power + ) +from tkinter import ttk #esta linea esta de más? class CalculatorGUI: def __init__(self, root): @@ -80,6 +83,10 @@ def create_widgets(self): cmd = lambda t=txt: self.number_button_click(t) elif txt == '.': cmd = self.decimal_click + elif txt in ['+', '-', '*', '/', '^']: + cmd = lambda t=txt: self.operation_click(t) + elif txt == '=': + cmd = self.equals_click else: cmd = None # Por ahora, otros botones sin funcionalidad @@ -97,7 +104,6 @@ def create_widgets(self): command=cmd ).grid(row=r, column=c, padx=4, pady=4, sticky="nsew") - # Expandir filas y columnas for i in range(7): self.root.grid_rowconfigure(i, weight=1) @@ -105,7 +111,7 @@ def create_widgets(self): self.root.grid_columnconfigure(i, weight=1) - def number_button_click ( self , valor ): + def number_button_click (self , valor): """Maneja clicks de botones numéricos. Args: @@ -119,6 +125,7 @@ def number_button_click ( self , valor ): self.display.delete(0, tk.END) self.display.insert(0, self.current_value) + def decimal_click(self): """Maneja click del botón decimal. @@ -137,17 +144,74 @@ def decimal_click(self): self.display.insert(0, self.current_value) - def operación_clic ( self , op ): - """Maneja clics de operadores""" - pass - - - def equals_click ( self ): - """Calcula el resultado usando calculadora.py""" - pass + def operation_click(self, operation): + """Maneja clicks de operadores matemáticos. + + Guarda el primer número y operador para calcular cuando + el usuario presione "=". + + Args: + operation (str): Operador (+, -, *, /, ^, max, min) + + Examples: + >>> # Usuario: 5 + 3 = + >>> # 1. Ingresa "5" + >>> # 2. Click "+": first_number=5, operator="+" + >>> # 3. Ingresa "3" + >>> # 4. Click "=": calcula 5+3=8 + """ + if self.current_value: + # Si hay operación pendiente, calcularla primero + if self.first_number is not None and self.operator: + self.equals_click() + + self.first_number = float(self.current_value) + self.operator = operation + self.current_value = "" - def clear_click ( self ): + def equals_click(self): + """Calcula el resultado de la operación actual. + + Usa las funciones de calculator.py para realizar el cálculo. + + Examples: + >>> # Usuario: 5 + 3 = + >>> # first_number=5, operator="+", current_value="3" + >>> # Ejecuta: add(5, 3) = 8 + >>> # Display: "8" + """ + if self.current_value and self.first_number is not None and self.operator: + try: + second_number = float(self.current_value) + result = None + + if self.operator == '+': + result = add(self.first_number, second_number) + elif self.operator == '-': + result = subtract(self.first_number, second_number) + elif self.operator == '*': + result = multiply(self.first_number, second_number) + elif self.operator == '/': + result = divide(self.first_number, second_number) + elif self.operator == '^': + result = power(self.first_number, second_number) + + self.display.delete(0, tk.END) + self.display.insert(0, str(result)) + self.current_value = str(result) + self.first_number = None + self.operator = None + + except ZeroDivisionError: + self.display.delete(0, tk.END) + self.display.insert(0, "Error: División por 0") + self.current_value = "" + self.first_number = None + self.operator = None + + + def clear_click(self): """Exhibición de Limpia""" pass From b10d4f77c74d3fb1553eee973be934644b7cce0a Mon Sep 17 00:00:00 2001 From: Alex Date: Mon, 17 Nov 2025 21:59:09 -0400 Subject: [PATCH 08/25] =?UTF-8?q?feat:=20implementar=20botones=20C=20y=20?= =?UTF-8?q?=E2=8C=AB=20con=20su=20funcionalidad=20correspondiente?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 41 +++++++++++++++++++++++++++++++++++++++-- 1 file changed, 39 insertions(+), 2 deletions(-) diff --git a/gui.py b/gui.py index bf63461..3330d48 100644 --- a/gui.py +++ b/gui.py @@ -87,6 +87,10 @@ def create_widgets(self): cmd = lambda t=txt: self.operation_click(t) elif txt == '=': cmd = self.equals_click + elif txt == 'C': + cmd = self.clear_click + elif txt == '⌫': + cmd = self.backspace_click else: cmd = None # Por ahora, otros botones sin funcionalidad @@ -212,8 +216,41 @@ def equals_click(self): def clear_click(self): - """Exhibición de Limpia""" - pass + """Limpia completamente el display y resetea el estado de la calculadora. + + Resetea: + - current_value: cadena vacía + - operator: None + - first_number: None + - Display: vacío + + Examples: + >>> # Display muestra: "235" + >>> # Usuario presiona C + >>> # Display muestra: "" + """ + self.current_value = "" + self.operator = None + self.first_number = None + self.display.delete(0, tk.END) + + + def backspace_click(self): + """Elimina el último carácter del display. + + Si el display está vacío, no hace nada. + + Examples: + >>> # Display muestra: "1234" + >>> # Usuario presiona ⌫ + >>> # Display muestra: "123" + >>> # Usuario presiona ⌫ tres veces más + >>> # Display muestra: "" + """ + if self.current_value: + self.current_value = self.current_value[:-1] + self.display.delete(0, tk.END) + self.display.insert(0, self.current_value) From e3687ca1d37c5f466e7f4ebe7bb0f4e9bac50cf3 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Tue, 18 Nov 2025 15:54:57 -0400 Subject: [PATCH 09/25] feat: Agregar funciones de valor absoluto (abs), maximo (max) y minimo (min) --- gui.py | 36 ++++++++++++++++++++++++++++++++++-- 1 file changed, 34 insertions(+), 2 deletions(-) diff --git a/gui.py b/gui.py index bf63461..92cb051 100644 --- a/gui.py +++ b/gui.py @@ -1,8 +1,7 @@ import tkinter as tk from calculator import ( - add, subtract, multiply, divide, power + add, subtract, multiply, divide, power, valor_maximo, valor_minimo, abs_value ) -from tkinter import ttk #esta linea esta de más? class CalculatorGUI: def __init__(self, root): @@ -87,6 +86,8 @@ def create_widgets(self): cmd = lambda t=txt: self.operation_click(t) elif txt == '=': cmd = self.equals_click + elif txt in ['abs', 'max', 'min']: + cmd = lambda t=txt: self.scientific_click(t) else: cmd = None # Por ahora, otros botones sin funcionalidad @@ -196,6 +197,10 @@ def equals_click(self): result = divide(self.first_number, second_number) elif self.operator == '^': result = power(self.first_number, second_number) + elif self.operator == 'max': + result = valor_maximo(self.first_number, second_number) + elif self.operator == 'min': + result = valor_minimo(self.first_number, second_number) self.display.delete(0, tk.END) self.display.insert(0, str(result)) @@ -216,6 +221,33 @@ def clear_click(self): pass + def scientific_click(self, func): + """Maneja clicks de funciones científicas. + + Args: + func (str): Función científica (abs, max, min) + + Examples: + >>> # abs: Display "-5" → click "abs" → "5" + >>> # max: "10" → "max" → "20" → "=" → "20" + """ + if func == 'abs': + # Función de 1 argumento: calcular inmediatamente + if self.current_value: + try: + value = float(self.current_value) + result = abs_value(value) + self.display.delete(0, tk.END) + self.display.insert(0, str(result)) + self.current_value = str(result) + except Exception as e: + self.show_error(str(e)) + + elif func in ['max', 'min']: + # Funciones de 2 argumentos: funciona como operador + self.operation_click(func) + + def main(): root = tk.Tk() From 515568af3f8ec82749f79262842f4b604e5a26c3 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Fri, 21 Nov 2025 16:12:59 -0400 Subject: [PATCH 10/25] =?UTF-8?q?refactor:=20refactorizar=20l=C3=B3gica=20?= =?UTF-8?q?de=20operaciones=20unarias?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 63 ++++++++++++++++++++++++++++++++++------------------------ 1 file changed, 37 insertions(+), 26 deletions(-) diff --git a/gui.py b/gui.py index 5452c1d..9eafc4f 100644 --- a/gui.py +++ b/gui.py @@ -76,8 +76,8 @@ def create_widgets(self): ('=', 6, 3, COLORS["equal"]), ] + # Conectar cada botón con su respectiva función for (txt, r, c, color) in buttons: - # Conectar solo botones numéricos if txt.isdigit(): cmd = lambda t=txt: self.number_button_click(t) elif txt == '.': @@ -222,18 +222,18 @@ def equals_click(self): def clear_click(self): """Limpia completamente el display y resetea el estado de la calculadora. - - Resetea: - - current_value: cadena vacía - - operator: None - - first_number: None - - Display: vacío - - Examples: - >>> # Display muestra: "235" - >>> # Usuario presiona C - >>> # Display muestra: "" - """ + + Resetea: + - current_value: cadena vacía + - operator: None + - first_number: None + - Display: vacío + + Examples: + >>> # Display muestra: "235" + >>> # Usuario presiona C + >>> # Display muestra: "" + """ self.current_value = "" self.operator = None self.first_number = None @@ -258,6 +258,25 @@ def backspace_click(self): self.display.insert(0, self.current_value) + def unary_operation(self, func): + if self.current_value: + try: + result = None + + if func == 'abs': + result = abs_value(self.first_number) + #elif func == 'cos': + + self.display.delete(0, tk.END) + self.display.insert(0, str(result)) + self.current_value = str(result) + self.first_number = None + self.operator = None + + except Exception as e: + self.show_error(str(e)) + + def scientific_click(self, func): """Maneja clicks de funciones científicas. @@ -268,20 +287,12 @@ def scientific_click(self, func): >>> # abs: Display "-5" → click "abs" → "5" >>> # max: "10" → "max" → "20" → "=" → "20" """ - if func == 'abs': - # Función de 1 argumento: calcular inmediatamente - if self.current_value: - try: - value = float(self.current_value) - result = abs_value(value) - self.display.delete(0, tk.END) - self.display.insert(0, str(result)) - self.current_value = str(result) - except Exception as e: - self.show_error(str(e)) - + + # Funciones de 1 argumento se calculan inmediatamente + if func in ['abs', 'cos', 'sin', 'tan']: + self.unary_operation(func) + # Funciones de 2 argumentos usan la lógica de operación normal elif func in ['max', 'min']: - # Funciones de 2 argumentos: funciona como operador self.operation_click(func) From f4e1d79e31606c347e7f40a062bee4deb76fd1d5 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Fri, 21 Nov 2025 17:50:41 -0400 Subject: [PATCH 11/25] refactor(gui): mejorar funciones unarias y manejo de errores --- gui.py | 9 ++++++--- 1 file changed, 6 insertions(+), 3 deletions(-) diff --git a/gui.py b/gui.py index 9eafc4f..f5dd661 100644 --- a/gui.py +++ b/gui.py @@ -264,7 +264,7 @@ def unary_operation(self, func): result = None if func == 'abs': - result = abs_value(self.first_number) + result = abs_value(float(self.current_value)) #elif func == 'cos': self.display.delete(0, tk.END) @@ -274,8 +274,11 @@ def unary_operation(self, func): self.operator = None except Exception as e: - self.show_error(str(e)) - + self.display.delete(0, tk.END) + self.display.insert(0, f"Error: {str(e)}") + self.current_value = "" + self.first_number = None + self.operator = None def scientific_click(self, func): """Maneja clicks de funciones científicas. From 1f1c0848a614f20afe15e5dbf79c1957b8522a5d Mon Sep 17 00:00:00 2001 From: Alex Date: Fri, 21 Nov 2025 19:24:55 -0400 Subject: [PATCH 12/25] docs: crear guia de usuario para GUI --- .github/docs/USER_GUIDE.md | 174 ++++++++++++++++++ .github/docs/screenshots/calculator-error.gif | Bin 0 -> 71342 bytes .github/docs/screenshots/calculator-main.jpeg | Bin 0 -> 20867 bytes .../screenshots/calculator-scientific.gif | Bin 0 -> 206418 bytes .../docs/screenshots/operaciones-basicas.gif | Bin 0 -> 348320 bytes 5 files changed, 174 insertions(+) create mode 100644 .github/docs/USER_GUIDE.md create mode 100644 .github/docs/screenshots/calculator-error.gif create mode 100644 .github/docs/screenshots/calculator-main.jpeg create mode 100644 .github/docs/screenshots/calculator-scientific.gif create mode 100644 .github/docs/screenshots/operaciones-basicas.gif diff --git a/.github/docs/USER_GUIDE.md b/.github/docs/USER_GUIDE.md new file mode 100644 index 0000000..7c01407 --- /dev/null +++ b/.github/docs/USER_GUIDE.md @@ -0,0 +1,174 @@ +# 📖 Guía de Usuario - Calculadora GUI + +## 🚀 Inicio Rápido + +### Requisitos +- Python 3.12 o superior +- tkinter (incluido en Python estándar) + +### Ejecutar la aplicación +```bash +python gui.py +``` + +![Vista Principal](screenshots/calculator-main.jpeg) + +--- + +## 🖥️ Interfaz de Usuario + +### Display +El display en la parte superior muestra: +- Números ingresados +- Resultados de operaciones +- Mensajes de error + +### Botones Numéricos (0-9) +Click en estos botones para ingresar números. + +**Ejemplo:** +1. Click en "5" +2. Click en "2" +3. Display muestra: "52" + +### Botón Punto Decimal (.) +Permite ingresar números decimales. + +**Ejemplo:** +- Click en "5", ".", "2" → Display: "5.2" + +### Botones de Operadores (+, -, *, /, ^) +Realizan operaciones matemáticas. + +**Ejemplo de suma:** +1. Ingresa "5" +2. Click en "+" +3. Ingresa "3" +4. Click en "=" +5. Resultado: "8" + +**Ejemplo de resta:** +1. Ingresa "7" +2. Click en "-" +3. Ingresa "3" +4. Click en "=" +5. Resultado: "4" + +**Ejemplo de multipicación:** +1. Ingresa "5" +2. Click en "*" +3. Ingresa "5" +4. Click en "=" +5. Resultado: "25" + +**Ejemplo de división:** +1. Ingresa "15" +2. Click en "/" +3. Ingresa "3" +4. Click en "=" +5. Resultado: "5" + +**Ejemplo de elevado:** +1. Ingresa "5" +2. Click en "^" +3. Ingresa "3" +4. Click en "=" +5. Resultado: "125" + +![Operaciones basicas](screenshots/operaciones-basicas.gif) + +--- + +## 🔬 Funciones Científicas + +### Valor Absoluto (abs) +Convierte números negativos en positivos. + +**Ejemplo:** +1. Ingresa "-5" +2. Click en "abs" +3. Resultado: "5" + +### Máximo (max) +Encuentra el mayor de dos números. + +**Ejemplo:** +1. Ingresa "10" +2. Click en "max" +3. Ingresa "20" +4. Click en "=" +5. Resultado: "20" + +### Mínimo (min) +Encuentra el menor de dos números. + +**Ejemplo:** +1. Ingresa "10" +2. Click en "min" +3. Ingresa "20" +4. Click en "=" +5. Resultado: "10" + +![Funciones Científicas](screenshots/calculator-scientific.gif) + +--- + +## 🗑️ Botón Clear (C) + +Limpia el display y resetea la calculadora. + +**Uso:** +- Click en "C" en cualquier momento +- Todo se resetea, listo para nuevo cálculo + +--- + +## ⚠️ Manejo de Errores + +### División por Cero +La calculadora muestra un mensaje de error. + +**Ejemplo:** +1. Ingresa "5" +2. Click en "/" +3. Ingresa "0" +4. Click en "=" +5. Display: "Error: No se puede dividir por cero" + +![Error](screenshots/calculator-error.gif) + +**Solución:** Click en "C" para comenzar de nuevo + +--- + +## 💡 Consejos y Trucos + +### Operaciones Consecutivas +Puedes continuar operando con el resultado: +- `5 + 3 = 8` → `* 2 = 16` → `- 1 = 15` + +### Números Decimales +- Puedes ingresar decimales en cualquier operación +- Solo un punto por número +- Ejemplo: `5.5 + 2.3 = 7.8` + +--- + +## 🆘 Troubleshooting + +### Problema: Display no muestra nada +**Solución:** Click en "C" para resetear + +### Problema: Error después de operación +**Solución:** Click en "C" y comienza de nuevo + +### Problema: No puedo ingresar más dígitos +**Solución:** Probablemente alcanzaste el resultado, usa "C" o continúa operando + +--- + +## 📞 Soporte + +Si encuentras un bug o tienes sugerencias: +- Crea un issue en GitHub +- Contacta al equipo de desarrollo \ No newline at end of file diff --git a/.github/docs/screenshots/calculator-error.gif b/.github/docs/screenshots/calculator-error.gif new file mode 100644 index 0000000000000000000000000000000000000000..291ad06ff2b8ff61fe42242d8fcf7553e4d721d7 GIT binary patch literal 71342 zcmeGF1yq%L-UbYBy1N^tQv_+GyH%7%5b0J#5Tv`MySuv^q+6t08tJahdjscqJZH|F znKjSM^L_90&b=<+X73G4_gcTauIrD4lsFf+ju=E8ge?ek?;1&7OzD}3kfInXGYb?1 z2zclW8X6Ax$_RXbZeEs2`u8vT|G~xZ`-_p0@!`XVyxiP(;Nj-}0X}YSL2hmlZXPji z9(it_C)_-;+&seEJc8Ujk9q#ti;qW~pGRJhPeoAZwfGZPv8Nv5%HEP1eu_F?T1FpD z%q-1rFLN_9b2AHbGb?j5bMu>zUttEk!oqUNh6nqBeuF;<{7>UF81o>CVK0VlKZ$!gQDi$?eY?nLuh!x4v-fdN z;OS7rg_fG--rSFK=h8yMUH26uzO17PqMFnAmco(6;G zuC5lYuD)GfE?rzKot|zUA8#KX?j8K;wSRE%m)PGw_$RTqx4(IKw0eB9e0uur>}>J; zeE#Ho`tW@G;9~gTyl3~kZRfn|+iBtSamMIz($HaS??F`8UQpYfXZ`mNWvk{n^M+|t zhKXN{quOjD%I!n4-9IJyhsB13M@2+NMMcNN#m6TmC8edM73SxcmzLC2mN(T^ced2` zb+(N3wN8EMm>ut(pBh@28C_YN*;rlK+u1%jIk~#J0^eQ0*E{_3{a<~72ZO{Ah$V}X zn%&^B=ruZvl3TsdDWu~hi&H-P;jq(GI)WcAYrK~TRim8~g-Hbku?r)?S&!|1ss3_EK z^re_!if^`_VJ`UAoag-0WG zIw&omGiPwK$pUU?WhS@i!TbPyX)&)i*Tc%s0ZcJi&5ZlcJ=1ZFBYL=#4F;=Ze5uWz zS{eH(k;^a)m$9z6E;Pl&Uu|txP9+@q#xT6l-Zx#i^xZ!XkIQQ469ZdasPR_XdDWt{ zbA06a7Cbtf5inn_NUY_)$YKJvxvV{2TehPPw3$0)j}%;g9V+ko4rM9e{c17xsQc!} zFfAb*-w|bd{KvSe7*ANj$c*}ZQV6`j_YBDmW*wHtIN#ZE#L}|NR*?<6(x~ zlWa&z4)!c|{+mIR#0J z2Ev0hpoZQ}*p6v%*z}Ly&!pywq(khcY%u2ttF9Ga*KWD?;%vEVr)kw7r z6;yn@vH9Zr?)hd>8*aEsaVK@|_mWHn%G0JsHeJ zpu3F)lQPnDzl%0AZ@-(d^80=dO9$gY@1dji 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 D{?Uv4 literal 0 HcmV?d00001 diff --git a/.github/docs/screenshots/operaciones-basicas.gif b/.github/docs/screenshots/operaciones-basicas.gif new file mode 100644 index 0000000000000000000000000000000000000000..711a25f938e1e951e4c8ee1684daed3ae1df203d GIT binary patch literal 348320 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

P)>i48_c2e@}`8N{Hqc!0-_Y{H*IRp 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 LF8WT#VJiOvmK`^G literal 0 HcmV?d00001 From a98b28be936ebb91578a76070ce954d497d7b0cd Mon Sep 17 00:00:00 2001 From: Alex Date: Sat, 22 Nov 2025 21:16:32 -0400 Subject: [PATCH 13/25] docs: moviendo la carpetadocs --- {.github/docs => docs}/USER_GUIDE.md | 0 .../docs => docs}/screenshots/calculator-error.gif | Bin .../docs => docs}/screenshots/calculator-main.jpeg | Bin .../screenshots/calculator-scientific.gif | Bin .../screenshots/operaciones-basicas.gif | Bin 5 files changed, 0 insertions(+), 0 deletions(-) rename {.github/docs => docs}/USER_GUIDE.md (100%) rename {.github/docs => docs}/screenshots/calculator-error.gif (100%) rename {.github/docs => docs}/screenshots/calculator-main.jpeg (100%) rename {.github/docs => docs}/screenshots/calculator-scientific.gif (100%) rename {.github/docs => docs}/screenshots/operaciones-basicas.gif (100%) diff --git a/.github/docs/USER_GUIDE.md b/docs/USER_GUIDE.md similarity index 100% rename from .github/docs/USER_GUIDE.md rename to docs/USER_GUIDE.md diff --git a/.github/docs/screenshots/calculator-error.gif b/docs/screenshots/calculator-error.gif similarity index 100% rename from .github/docs/screenshots/calculator-error.gif rename to docs/screenshots/calculator-error.gif diff --git a/.github/docs/screenshots/calculator-main.jpeg b/docs/screenshots/calculator-main.jpeg similarity index 100% rename from .github/docs/screenshots/calculator-main.jpeg rename to docs/screenshots/calculator-main.jpeg diff --git a/.github/docs/screenshots/calculator-scientific.gif b/docs/screenshots/calculator-scientific.gif similarity index 100% rename from .github/docs/screenshots/calculator-scientific.gif rename to docs/screenshots/calculator-scientific.gif diff --git a/.github/docs/screenshots/operaciones-basicas.gif b/docs/screenshots/operaciones-basicas.gif similarity index 100% rename from .github/docs/screenshots/operaciones-basicas.gif rename to docs/screenshots/operaciones-basicas.gif From 7666e2504f7b69b87a563f4b58bae421ec50ec0f Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Sun, 23 Nov 2025 12:10:06 -0400 Subject: [PATCH 14/25] refactor(gui): agregar unary_operation y manejar errores en el display --- gui.py | 43 ++++++++++++++++++++++++++++++++----------- 1 file changed, 32 insertions(+), 11 deletions(-) diff --git a/gui.py b/gui.py index f5dd661..f6b5b53 100644 --- a/gui.py +++ b/gui.py @@ -186,7 +186,14 @@ def equals_click(self): >>> # Ejecuta: add(5, 3) = 8 >>> # Display: "8" """ - if self.current_value and self.first_number is not None and self.operator: + if not self.current_value: + # Muestra error en el display y resetea el estado + self.show_error("Ingresa el segundo número") + return + + elif self.first_number is not None and self.operator: + # En caso de no haber operador o primer número, no hacer nada + try: second_number = float(self.current_value) result = None @@ -213,11 +220,11 @@ def equals_click(self): self.operator = None except ZeroDivisionError: - self.display.delete(0, tk.END) - self.display.insert(0, "Error: División por 0") - self.current_value = "" - self.first_number = None - self.operator = None + self.show_error("No se puede dividir por 0") + return + except Exception as e: + self.show_error(str(e)) + return def clear_click(self): @@ -258,6 +265,24 @@ def backspace_click(self): self.display.insert(0, self.current_value) + def show_error(self, message): + """Muestra un mensaje de error en el display. + + Args: + message (str): Mensaje de error a mostrar + + Examples: + >>> self.show_error("División por 0") + >>> # Display: "Error: División por 0" + """ + self.display.delete(0, tk.END) + self.display.insert(0, f"Error: {message}") + # Resetear estado + self.current_value = "" + self.first_number = None + self.operator = None + + def unary_operation(self, func): if self.current_value: try: @@ -274,11 +299,7 @@ def unary_operation(self, func): self.operator = None except Exception as e: - self.display.delete(0, tk.END) - self.display.insert(0, f"Error: {str(e)}") - self.current_value = "" - self.first_number = None - self.operator = None + self.show_error(str(e)) def scientific_click(self, func): """Maneja clicks de funciones científicas. From e83d818c53c1d45cdfb4adac9c89767b9b2685bc Mon Sep 17 00:00:00 2001 From: Jandres Date: Mon, 24 Nov 2025 12:15:02 -0400 Subject: [PATCH 15/25] feat: configurar CI/CD con GitHub Actions --- .github/workflows/ci.yml | 30 ++++++++++++++++++++++++++++++ README.md | 18 +++++++++++++++++- 2 files changed, 47 insertions(+), 1 deletion(-) create mode 100644 .github/workflows/ci.yml diff --git a/.github/workflows/ci.yml b/.github/workflows/ci.yml new file mode 100644 index 0000000..f4237c6 --- /dev/null +++ b/.github/workflows/ci.yml @@ -0,0 +1,30 @@ +name: CI + +on: + push: + branches: [main, dev] + pull_request: + branches: [main, dev] + +jobs: + test: + runs-on: ubuntu-latest + strategy: + matrix: + python-version: ["3.12"] + + steps: + - uses: actions/checkout@v3 + + - name: Set up Python ${{ matrix.python-version }} + uses: actions/setup-python@v4 + with: + python-version: ${{ matrix.python-version }} + + - name: Install dependencies + run: | + python -m pip install --upgrade pip + pip install pytest + + - name: Run tests + run: pytest -v diff --git a/README.md b/README.md index ad0eab5..4189628 100644 --- a/README.md +++ b/README.md @@ -1,5 +1,7 @@ # Team Practice - Flujo de Trabajo Colaborativo +[![CI](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml/badge.svg)](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml) + Este repositorio está diseñado para practicar y aprender el flujo de trabajo colaborativo en equipo usando **Python** como lenguaje principal, elegido por su facilidad de uso y aprendizaje. ## 🎯 Propósito del Proyecto @@ -99,14 +101,28 @@ docs: actualizar README con instrucciones de setup ## 🧪 Testing +### Ejecutar pruebas localmente + ```bash # Ejecutar todas las pruebas -pytest test_calculator.py +pytest -v + +# Ejecutar pruebas de un archivo específico +pytest test_calculator.py -v # Ejecutar el programa principal python main.py ``` +### Integración Continua (CI) + +Este proyecto usa **GitHub Actions** para ejecutar automáticamente las pruebas en cada push y pull request. El badge de estado al inicio del README muestra si las pruebas están pasando. + +- ✅ **Verde**: Todas las pruebas pasan +- ❌ **Rojo**: Hay pruebas fallando + +Para más detalles, revisa el archivo de configuración en `.github/workflows/ci.yml` + ## 👥 Contribuir 1. Asigna o crea un issue usando las plantillas proporcionadas From ce77be82e8bd65e3e0f88b829e1108c85a4db941 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Tue, 25 Nov 2025 23:29:26 -0400 Subject: [PATCH 16/25] =?UTF-8?q?feat(gui):=20soporte=20n=C3=BAmeros=20neg?= =?UTF-8?q?ativos=20y=20validaciones?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 71 ++++++++++++++++++++++++++++++++++++++++++++++++++++------ 1 file changed, 64 insertions(+), 7 deletions(-) diff --git a/gui.py b/gui.py index f6b5b53..ab73334 100644 --- a/gui.py +++ b/gui.py @@ -165,11 +165,65 @@ def operation_click(self, operation): >>> # 3. Ingresa "3" >>> # 4. Click "=": calcula 5+3=8 """ - if self.current_value: - # Si hay operación pendiente, calcularla primero - if self.first_number is not None and self.operator: - self.equals_click() - + # Si el usuario presiona '-' cuando no hay número iniciado, iniciamos un número negativo + # Manejar '-' como inicio de número negativo + if operation == '-' and (self.current_value == "" or self.current_value is None): + # Iniciamos la entrada de un número negativo + self.current_value = '-' + self.display.delete(0, tk.END) + self.display.insert(0, self.current_value) + return + if operation == '-' and self.current_value == '-': + # Evitar varios signos '-' + return + + # Si no hay nada en el display y ya hay un primer número, + # permitimos cambiar el operador (por ejemplo: 5 + -> 5 -) + if not self.current_value: + if self.first_number is not None: + self.operator = operation + return + + # A partir de aquí current_value contiene texto: validar una vez + try: + value = float(self.current_value) + except ValueError: + self.show_error("Número inválido") + return + + # Si no hay primer número guardado, lo asignamos + if self.first_number is None: + self.first_number = value + self.operator = operation + self.current_value = "" + return + + # Si ya hay primer número y operador, calculamos la operación pendiente + if self.first_number is not None and self.operator is not None: + # Guardamos el segundo número y ejecutamos equals + self.equals_click() + # equals_click deja el resultado en self.current_value + try: + self.first_number = float(self.current_value) + except ValueError: + self.show_error("Número inválido") + return + self.operator = operation + self.current_value = "" + + elif self.current_value and self.first_number is None and self.operator is None: + self.first_number = float(self.current_value) + self.operator = operation + self.current_value = "" + + elif self.first_number is not None and self.operator is not None and self.current_value: + # validar current_value antes de llamar equals_click + try: + float(self.current_value) + except ValueError: + self.show_error("Número inválido") + return + self.equals_click() self.first_number = float(self.current_value) self.operator = operation self.current_value = "" @@ -186,12 +240,12 @@ def equals_click(self): >>> # Ejecuta: add(5, 3) = 8 >>> # Display: "8" """ - if not self.current_value: + if self.first_number is not None and self.operator is not None and not self.current_value: # Muestra error en el display y resetea el estado self.show_error("Ingresa el segundo número") return - elif self.first_number is not None and self.operator: + elif self.first_number is not None and self.operator is not None and self.current_value: # En caso de no haber operador o primer número, no hacer nada try: @@ -285,6 +339,9 @@ def show_error(self, message): def unary_operation(self, func): if self.current_value: + if self.current_value == "-": + self.show_error("Número incompleto") + return try: result = None From 5cc5697728d7435a172e123707fc015f65961f26 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Wed, 26 Nov 2025 19:46:06 -0400 Subject: [PATCH 17/25] docs: actualizar README con detalles de la GUI y estructura del proyecto --- README.md | 15 +++++++++++---- 1 file changed, 11 insertions(+), 4 deletions(-) diff --git a/README.md b/README.md index 4189628..f813d2f 100644 --- a/README.md +++ b/README.md @@ -19,9 +19,12 @@ Este repositorio está diseñado para practicar y aprender el flujo de trabajo c - Git - Editor de código (VS Code recomendado) -### Próximas Características +### Características Implementadas - Interfaz gráfica con tkinter + +### Próximas Características + - Más operaciones matemáticas - Historial de operaciones - Soporte para expresiones matemáticas complejas @@ -43,9 +46,10 @@ pip install pytest ``` team-practice/ -├── calculator.py # Código fuente principal -├── test_calculator.py # Pruebas unitarias +├── calculator.py # Código fuente principal +├── test_calculator.py # Pruebas unitarias ├── main.py # Programa principal +├── gui.py # Interfaz gráfica ├── .gitignore # Archivos ignorados por Git ├── .github/ # Configuración y templates de GitHub │ ├── ISSUE_TEMPLATE/ # Plantillas para issues @@ -54,7 +58,7 @@ team-practice/ │ └── REVIEW_COMMENTS.md # Plantillas para comentarios de revisión ├── README.md # Este archivo ├── CHANGELOG.md # Historial de cambios -└── LICENSE # Licencia del proyecto +└── LICENSE # Licencia del proyecto ``` ## 🤝 Flujo de Trabajo @@ -112,6 +116,9 @@ pytest test_calculator.py -v # Ejecutar el programa principal python main.py + +# Ejecutar la interfaz gráfica +python gui.py ``` ### Integración Continua (CI) From 5358d639891b844bca4167a5d5e8db1b5b9fdf39 Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Wed, 26 Nov 2025 20:02:25 -0400 Subject: [PATCH 18/25] =?UTF-8?q?test:=20agregar=20casos=20de=20prueba=20p?= =?UTF-8?q?ara=20n=C3=BAmeros=20negativos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- test_calculator.py | 10 +++++++++- 1 file changed, 9 insertions(+), 1 deletion(-) diff --git a/test_calculator.py b/test_calculator.py index c9d1c07..3d812e9 100644 --- a/test_calculator.py +++ b/test_calculator.py @@ -14,12 +14,14 @@ def test_add(): assert add(2, 3) == 5 assert add(-1, 1) == 0 assert add(0, 5) == 5 + assert add(-2, -3) == -5 def test_subtract(): """Test resta básica.""" assert subtract(5, 3) == 2 assert subtract(0, 5) == -5 + assert subtract(-2, -3) == 1 def test_multiply(): @@ -27,13 +29,15 @@ def test_multiply(): assert multiply(3, 4) == 12 assert multiply(5, 0) == 0 assert multiply(-2, 3) == -6 + assert multiply(-2, -3) == 6 def test_divide(): """Test división básica.""" assert divide(10, 2) == 5.0 assert divide(7, 2) == 3.5 - + assert divide(-2, 3) == -0.6666666666666666 + assert divide(-2, -3) == 0.6666666666666666 def test_divide_by_zero(): """Test que división por cero lanza excepción.""" @@ -46,6 +50,10 @@ def test_power(): assert power(2, 3) == 8 assert power(5, 0) == 1 assert power(4, 0.5) == 2.0 + assert power(-2, 3) == -8 + assert power(-2, 0) == 1 + assert power(-2, -3) == -0.125 + # assert power(-4, 0.5) == -2.0, "Error: la raíz cuadrada de un número negativo no es real" def test_valor_maximo(): From 1f150cd58996e80d1a47a7f31289120af4f3e82a Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Thu, 27 Nov 2025 01:53:11 -0400 Subject: [PATCH 19/25] =?UTF-8?q?hotfix(gui):=20eliminar=20l=C3=B3gica=20r?= =?UTF-8?q?edundante=20en=20el=20manejo=20de=20operadores?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 12 ------------ 1 file changed, 12 deletions(-) diff --git a/gui.py b/gui.py index ab73334..96690f9 100644 --- a/gui.py +++ b/gui.py @@ -216,18 +216,6 @@ def operation_click(self, operation): self.operator = operation self.current_value = "" - elif self.first_number is not None and self.operator is not None and self.current_value: - # validar current_value antes de llamar equals_click - try: - float(self.current_value) - except ValueError: - self.show_error("Número inválido") - return - self.equals_click() - self.first_number = float(self.current_value) - self.operator = operation - self.current_value = "" - def equals_click(self): """Calcula el resultado de la operación actual. From 02fa3fa18d700438b0b5bf52fb5063e45ac3d03a Mon Sep 17 00:00:00 2001 From: Jhoseph Date: Thu, 27 Nov 2025 02:24:14 -0400 Subject: [PATCH 20/25] =?UTF-8?q?refactor(gui):=20eliminar=20l=C3=B3gica?= =?UTF-8?q?=20redundante=20restante?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 5 ----- 1 file changed, 5 deletions(-) diff --git a/gui.py b/gui.py index 96690f9..13e2fc1 100644 --- a/gui.py +++ b/gui.py @@ -211,11 +211,6 @@ def operation_click(self, operation): self.operator = operation self.current_value = "" - elif self.current_value and self.first_number is None and self.operator is None: - self.first_number = float(self.current_value) - self.operator = operation - self.current_value = "" - def equals_click(self): """Calcula el resultado de la operación actual. From 2365afa5dc0505ffed185236db9b316428b1e365 Mon Sep 17 00:00:00 2001 From: Jandres Date: Thu, 27 Nov 2025 08:45:04 -0400 Subject: [PATCH 21/25] feat: agregar soporte de teclado para calculadora GUI y validaciones --- docs/USER_GUIDE.md | 44 +++++++-- gui.py | 226 +++++++++++++++++++++++++++++---------------- 2 files changed, 181 insertions(+), 89 deletions(-) diff --git a/docs/USER_GUIDE.md b/docs/USER_GUIDE.md index 7c01407..8711b9c 100644 --- a/docs/USER_GUIDE.md +++ b/docs/USER_GUIDE.md @@ -3,44 +3,54 @@ ## 🚀 Inicio Rápido ### Requisitos + - Python 3.12 o superior - tkinter (incluido en Python estándar) ### Ejecutar la aplicación + ```bash python gui.py ``` -![Vista Principal](screenshots/calculator-main.jpeg) +![Vista Principal](https://raw.githubusercontent.com/WorkTeam01/team-practice/dev/docs/screenshots/calculator-main.jpeg) --- ## 🖥️ Interfaz de Usuario ### Display + El display en la parte superior muestra: + - Números ingresados - Resultados de operaciones - Mensajes de error ### Botones Numéricos (0-9) + Click en estos botones para ingresar números. **Ejemplo:** + 1. Click en "5" 2. Click en "2" 3. Display muestra: "52" ### Botón Punto Decimal (.) + Permite ingresar números decimales. **Ejemplo:** + - Click en "5", ".", "2" → Display: "5.2" -### Botones de Operadores (+, -, *, /, ^) +### Botones de Operadores (+, -, \*, /, ^) + Realizan operaciones matemáticas. **Ejemplo de suma:** + 1. Ingresa "5" 2. Click en "+" 3. Ingresa "3" @@ -48,6 +58,7 @@ Realizan operaciones matemáticas. 5. Resultado: "8" **Ejemplo de resta:** + 1. Ingresa "7" 2. Click en "-" 3. Ingresa "3" @@ -55,13 +66,15 @@ Realizan operaciones matemáticas. 5. Resultado: "4" **Ejemplo de multipicación:** + 1. Ingresa "5" -2. Click en "*" +2. Click en "\*" 3. Ingresa "5" 4. Click en "=" 5. Resultado: "25" **Ejemplo de división:** + 1. Ingresa "15" 2. Click en "/" 3. Ingresa "3" @@ -69,30 +82,35 @@ Realizan operaciones matemáticas. 5. Resultado: "5" **Ejemplo de elevado:** + 1. Ingresa "5" 2. Click en "^" 3. Ingresa "3" 4. Click en "=" 5. Resultado: "125" -![Operaciones basicas](screenshots/operaciones-basicas.gif) +![Operaciones basicas](https://raw.githubusercontent.com/WorkTeam01/team-practice/dev/docs/screenshots/operaciones-basicas.gif) --- ## 🔬 Funciones Científicas ### Valor Absoluto (abs) + Convierte números negativos en positivos. **Ejemplo:** + 1. Ingresa "-5" 2. Click en "abs" 3. Resultado: "5" ### Máximo (max) + Encuentra el mayor de dos números. **Ejemplo:** + 1. Ingresa "10" 2. Click en "max" 3. Ingresa "20" @@ -100,16 +118,18 @@ Encuentra el mayor de dos números. 5. Resultado: "20" ### Mínimo (min) + Encuentra el menor de dos números. **Ejemplo:** + 1. Ingresa "10" 2. Click en "min" 3. Ingresa "20" 4. Click en "=" 5. Resultado: "10" -![Funciones Científicas](screenshots/calculator-scientific.gif) +![Funciones Científicas](https://raw.githubusercontent.com/WorkTeam01/team-practice/dev/docs/screenshots/calculator-scientific.gif) --- @@ -118,6 +138,7 @@ Encuentra el menor de dos números. Limpia el display y resetea la calculadora. **Uso:** + - Click en "C" en cualquier momento - Todo se resetea, listo para nuevo cálculo @@ -126,16 +147,18 @@ Limpia el display y resetea la calculadora. ## ⚠️ Manejo de Errores ### División por Cero + La calculadora muestra un mensaje de error. **Ejemplo:** + 1. Ingresa "5" 2. Click en "/" 3. Ingresa "0" 4. Click en "=" 5. Display: "Error: No se puede dividir por cero" -![Error](screenshots/calculator-error.gif) +![Error](https://raw.githubusercontent.com/WorkTeam01/team-practice/dev/docs/screenshots/calculator-error.gif) **Solución:** Click en "C" para comenzar de nuevo @@ -144,10 +167,13 @@ La calculadora muestra un mensaje de error. ## 💡 Consejos y Trucos ### Operaciones Consecutivas + Puedes continuar operando con el resultado: + - `5 + 3 = 8` → `* 2 = 16` → `- 1 = 15` ### Números Decimales + - Puedes ingresar decimales en cualquier operación - Solo un punto por número - Ejemplo: `5.5 + 2.3 = 7.8` @@ -157,12 +183,15 @@ Puedes continuar operando con el resultado: ## 🆘 Troubleshooting ### Problema: Display no muestra nada + **Solución:** Click en "C" para resetear ### Problema: Error después de operación + **Solución:** Click en "C" y comienza de nuevo ### Problema: No puedo ingresar más dígitos + **Solución:** Probablemente alcanzaste el resultado, usa "C" o continúa operando --- @@ -170,5 +199,6 @@ Puedes continuar operando con el resultado: ## 📞 Soporte Si encuentras un bug o tienes sugerencias: + - Crea un issue en GitHub -- Contacta al equipo de desarrollo \ No newline at end of file +- Contacta al equipo de desarrollo diff --git a/gui.py b/gui.py index ab73334..bcb69cc 100644 --- a/gui.py +++ b/gui.py @@ -1,14 +1,13 @@ import tkinter as tk -from calculator import ( - add, subtract, multiply, divide, power, valor_maximo, valor_minimo, abs_value - ) +from tkinter.messagebox import showerror +from calculator import (add, subtract, multiply, divide, power, valor_maximo, valor_minimo, abs_value) class CalculatorGUI: def __init__(self, root): self.root = root self.root.title("Calculadora") - self.root.geometry("330x420") - self.root.configure(bg="#1E1E1E") # Fondo más elegante + self.root.geometry("330x450") + self.root.configure(bg="#1E1E1E") # Estado self.current_value = "" @@ -17,6 +16,9 @@ def __init__(self, root): # Interfaz de usuario self.create_widgets() + + # Activar captura de teclado + self.root.bind('', self.handle_keypress) def create_widgets(self): @@ -24,14 +26,15 @@ def create_widgets(self): "bg": "#1E1E1E", "display": "#2B2B2B", "numbers": "#3A3A3A", - "operators": "#FF8C00", # naranja más suave (Apple) + "operators": "#FF8C00", "equal": "#FF8C00", "clear": "#6E6E6E", - "text": "#FFFFFF" + "text": "#FFFFFF", + "error": "#FF4444" } - # ==== DISPLAY ==== - self.display = tk.Entry( + # Display principal + self.display = tk. Entry( self.root, font=("Arial", 28, "bold"), justify="right", @@ -40,43 +43,53 @@ def create_widgets(self): relief="flat", bd=10 ) - self.display.grid(row=0, column=0, columnspan=4, - sticky="nsew", padx=10, pady=10) + self.display.grid(row=0, column=0, columnspan=4, sticky="nsew", padx=10, pady=(10, 0)) - # ==== BOTONES ==== + # Label para mensajes de error + self.error_label = tk.Label( + self.root, + text="", + font=("Arial", 12), + bg=COLORS["bg"], + fg=COLORS["error"], + height=1 + ) + self.error_label.grid(row=1, column=0, columnspan=4, sticky="ew", padx=10, pady=(0, 5)) + + # Definición de botones buttons = [ - ('C', 1, 0, COLORS["clear"]), - ('(', 1, 1, COLORS["numbers"]), - (')', 1, 2, COLORS["numbers"]), - ('⌫', 1, 3, COLORS["clear"]), - - ('max', 2, 0, COLORS["numbers"]), - ('min', 2, 1, COLORS["numbers"]), - ('abs', 2, 2, COLORS["numbers"]), - ('/', 2, 3, COLORS["operators"]), - - ('7', 3, 0, COLORS["numbers"]), - ('8', 3, 1, COLORS["numbers"]), - ('9', 3, 2, COLORS["numbers"]), - ('*', 3, 3, COLORS["operators"]), - - ('4', 4, 0, COLORS["numbers"]), - ('5', 4, 1, COLORS["numbers"]), - ('6', 4, 2, COLORS["numbers"]), - ('-', 4, 3, COLORS["operators"]), - - ('1', 5, 0, COLORS["numbers"]), - ('2', 5, 1, COLORS["numbers"]), - ('3', 5, 2, COLORS["numbers"]), - ('+', 5, 3, COLORS["operators"]), - - ('^', 6, 0, COLORS["operators"]), - ('0', 6, 1, COLORS["numbers"]), - ('.', 6, 2, COLORS["numbers"]), - ('=', 6, 3, COLORS["equal"]), + ('C', 2, 0, COLORS["clear"]), + ('(', 2, 1, COLORS["numbers"]), + (')', 2, 2, COLORS["numbers"]), + ('⌫', 2, 3, COLORS["clear"]), + + ('max', 3, 0, COLORS["numbers"]), + ('min', 3, 1, COLORS["numbers"]), + ('abs', 3, 2, COLORS["numbers"]), + ('/', 3, 3, COLORS["operators"]), + + ('7', 4, 0, COLORS["numbers"]), + ('8', 4, 1, COLORS["numbers"]), + ('9', 4, 2, COLORS["numbers"]), + ('*', 4, 3, COLORS["operators"]), + + ('4', 5, 0, COLORS["numbers"]), + ('5', 5, 1, COLORS["numbers"]), + ('6', 5, 2, COLORS["numbers"]), + ('-', 5, 3, COLORS["operators"]), + + ('1', 6, 0, COLORS["numbers"]), + ('2', 6, 1, COLORS["numbers"]), + ('3', 6, 2, COLORS["numbers"]), + ('+', 6, 3, COLORS["operators"]), + + ('^', 7, 0, COLORS["operators"]), + ('0', 7, 1, COLORS["numbers"]), + ('.', 7, 2, COLORS["numbers"]), + ('=', 7, 3, COLORS["equal"]), ] - # Conectar cada botón con su respectiva función + # Asignar función a cada botón for (txt, r, c, color) in buttons: if txt.isdigit(): cmd = lambda t=txt: self.number_button_click(t) @@ -89,11 +102,11 @@ def create_widgets(self): elif txt == 'C': cmd = self.clear_click elif txt == '⌫': - cmd = self.backspace_click + cmd = self. backspace_click elif txt in ['abs', 'max', 'min']: cmd = lambda t=txt: self.scientific_click(t) else: - cmd = None # Por ahora, otros botones sin funcionalidad + cmd = lambda: None tk.Button( self.root, @@ -107,16 +120,52 @@ def create_widgets(self): activeforeground=COLORS["text"], highlightthickness=0, command=cmd - ).grid(row=r, column=c, padx=4, pady=4, sticky="nsew") + ). grid(row=r, column=c, padx=4, pady=4, sticky="nsew") - # Expandir filas y columnas - for i in range(7): + # Hacer que los botones se expandan con la ventana + for i in range(8): self.root.grid_rowconfigure(i, weight=1) for i in range(4): self.root.grid_columnconfigure(i, weight=1) - def number_button_click (self , valor): + def handle_keypress(self, event): + """Maneja las teclas presionadas por el usuario. + + Mapea las teclas del teclado a las funciones de la calculadora. + """ + key = event.char + + # Dígitos 0-9 + if key.isdigit(): + self.number_button_click(key) + + # Operadores básicos + elif key in ['+', '-', '*', '/']: + self.operation_click(key) + + # Potencia + elif key == '^': + self.operation_click('^') + + # Decimal + elif key == '.': + self.decimal_click() + + # Calcular (Enter o =) + elif key in ['\r', '\n', '=']: + self.equals_click() + + # Limpiar todo (Escape) + elif event.keysym == 'Escape': + self.clear_click() + + # Borrar último carácter (Backspace) + elif event.keysym == 'BackSpace': + self.backspace_click() + + + def number_button_click(self, valor): """Maneja clicks de botones numéricos. Args: @@ -126,22 +175,35 @@ def number_button_click (self , valor): >>> # Usuario presiona 2, 3, 5 >>> # Display muestra: "235" """ + # Validar que sea un dígito + if not str(valor).isdigit(): + self.show_error("Número inválido") + return + self.current_value += str(valor) self.display.delete(0, tk.END) self.display.insert(0, self.current_value) def decimal_click(self): - """Maneja click del botón decimal. + """Maneja click del botón decimal. - Agrega un punto decimal solo si no existe uno ya en el número actual. + Agrega un punto decimal solo si no existe uno ya en el número actual. Examples: >>> "5" → click(.) → "5." >>> "5." → click(.) → "5." (no cambia) >>> "" → click(.) → "0." """ - if '.' not in self.current_value: + # Validar que current_value sea válido antes de agregar punto + if self.current_value and self.current_value != '-': + try: + float(self.current_value) + except ValueError: + self. show_error("Número inválido") + return + + if '.' not in self. current_value: if not self.current_value: self.current_value = "0" self.current_value += '.' @@ -162,47 +224,41 @@ def operation_click(self, operation): >>> # Usuario: 5 + 3 = >>> # 1. Ingresa "5" >>> # 2. Click "+": first_number=5, operator="+" - >>> # 3. Ingresa "3" + >>> # 3. Ingresa "3" >>> # 4. Click "=": calcula 5+3=8 """ - # Si el usuario presiona '-' cuando no hay número iniciado, iniciamos un número negativo - # Manejar '-' como inicio de número negativo + # Permitir números negativos si se presiona '-' al inicio if operation == '-' and (self.current_value == "" or self.current_value is None): - # Iniciamos la entrada de un número negativo self.current_value = '-' self.display.delete(0, tk.END) self.display.insert(0, self.current_value) return if operation == '-' and self.current_value == '-': - # Evitar varios signos '-' return - # Si no hay nada en el display y ya hay un primer número, - # permitimos cambiar el operador (por ejemplo: 5 + -> 5 -) + # Cambiar de operador si ya hay uno seleccionado if not self.current_value: if self.first_number is not None: self.operator = operation return - # A partir de aquí current_value contiene texto: validar una vez + # Validar que sea un número válido try: value = float(self.current_value) except ValueError: self.show_error("Número inválido") return - # Si no hay primer número guardado, lo asignamos + # Guardar primer número if self.first_number is None: - self.first_number = value + self. first_number = value self.operator = operation self.current_value = "" return - # Si ya hay primer número y operador, calculamos la operación pendiente + # Calcular operación pendiente antes de la nueva if self.first_number is not None and self.operator is not None: - # Guardamos el segundo número y ejecutamos equals self.equals_click() - # equals_click deja el resultado en self.current_value try: self.first_number = float(self.current_value) except ValueError: @@ -216,23 +272,22 @@ def operation_click(self, operation): self.operator = operation self.current_value = "" - elif self.first_number is not None and self.operator is not None and self.current_value: - # validar current_value antes de llamar equals_click + elif self.first_number is not None and self. operator is not None and self.current_value: try: float(self.current_value) except ValueError: - self.show_error("Número inválido") + self. show_error("Número inválido") return self.equals_click() self.first_number = float(self.current_value) self.operator = operation - self.current_value = "" + self. current_value = "" def equals_click(self): """Calcula el resultado de la operación actual. - Usa las funciones de calculator.py para realizar el cálculo. + Usa las funciones de calculator. py para realizar el cálculo. Examples: >>> # Usuario: 5 + 3 = @@ -241,20 +296,17 @@ def equals_click(self): >>> # Display: "8" """ if self.first_number is not None and self.operator is not None and not self.current_value: - # Muestra error en el display y resetea el estado self.show_error("Ingresa el segundo número") return elif self.first_number is not None and self.operator is not None and self.current_value: - # En caso de no haber operador o primer número, no hacer nada - try: second_number = float(self.current_value) result = None if self.operator == '+': result = add(self.first_number, second_number) - elif self.operator == '-': + elif self. operator == '-': result = subtract(self.first_number, second_number) elif self.operator == '*': result = multiply(self.first_number, second_number) @@ -273,6 +325,9 @@ def equals_click(self): self.first_number = None self.operator = None + except ValueError: + self.show_error("Entrada inválida") + return except ZeroDivisionError: self.show_error("No se puede dividir por 0") return @@ -282,7 +337,7 @@ def equals_click(self): def clear_click(self): - """Limpia completamente el display y resetea el estado de la calculadora. + """Limpia completamente el display y resetea el estado de la calculadora. Resetea: - current_value: cadena vacía @@ -299,6 +354,7 @@ def clear_click(self): self.operator = None self.first_number = None self.display.delete(0, tk.END) + self.error_label.config(text="") # Limpiar también el error def backspace_click(self): @@ -320,22 +376,28 @@ def backspace_click(self): def show_error(self, message): - """Muestra un mensaje de error en el display. + """Muestra un mensaje de error en el label de errores. Args: message (str): Mensaje de error a mostrar Examples: >>> self.show_error("División por 0") - >>> # Display: "Error: División por 0" + >>> # Label de error: "⚠️ División por 0" """ - self.display.delete(0, tk.END) - self.display.insert(0, f"Error: {message}") + self.error_label.config(text=f"⚠️ {message}") + + # Limpiar error después de 3 segundos + self.root.after(3000, lambda: self.error_label.config(text="")) + # Resetear estado self.current_value = "" self.first_number = None self.operator = None + # Limpiar el display también + self.display.delete(0, tk.END) + def unary_operation(self, func): if self.current_value: @@ -369,19 +431,19 @@ def scientific_click(self, func): >>> # max: "10" → "max" → "20" → "=" → "20" """ - # Funciones de 1 argumento se calculan inmediatamente + # Funciones que solo necesitan un número if func in ['abs', 'cos', 'sin', 'tan']: self.unary_operation(func) - # Funciones de 2 argumentos usan la lógica de operación normal + # Funciones que necesitan dos números elif func in ['max', 'min']: self.operation_click(func) def main(): - root = tk.Tk() + root = tk. Tk() app = CalculatorGUI(root) root.mainloop() if __name__ == "__main__": - main() + main() \ No newline at end of file From b599aefa877801e9a407463e7dcaafe6aeb90187 Mon Sep 17 00:00:00 2001 From: Jandres Date: Thu, 27 Nov 2025 23:28:41 -0400 Subject: [PATCH 22/25] =?UTF-8?q?fix:=20corrige=20espacios=20en=20nombres?= =?UTF-8?q?=20de=20m=C3=A9todos=20y=20atributos?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- gui.py | 16 ++++++++-------- 1 file changed, 8 insertions(+), 8 deletions(-) diff --git a/gui.py b/gui.py index e569d00..6ada399 100644 --- a/gui.py +++ b/gui.py @@ -33,7 +33,7 @@ def create_widgets(self): } # Display principal - self.display = tk. Entry( + self.display = tk.Entry( self.root, font=("Arial", 28, "bold"), justify="right", @@ -101,7 +101,7 @@ def create_widgets(self): elif txt == 'C': cmd = self.clear_click elif txt == '⌫': - cmd = self. backspace_click + cmd = self.backspace_click elif txt in ['abs', 'max', 'min']: cmd = lambda t=txt: self.scientific_click(t) else: @@ -119,7 +119,7 @@ def create_widgets(self): activeforeground=COLORS["text"], highlightthickness=0, command=cmd - ). grid(row=r, column=c, padx=4, pady=4, sticky="nsew") + ).grid(row=r, column=c, padx=4, pady=4, sticky="nsew") # Hacer que los botones se expandan con la ventana for i in range(8): @@ -199,10 +199,10 @@ def decimal_click(self): try: float(self.current_value) except ValueError: - self. show_error("Número inválido") + self.show_error("Número inválido") return - if '.' not in self. current_value: + if '.' not in self.current_value: if not self.current_value: self.current_value = "0" self.current_value += '.' @@ -250,7 +250,7 @@ def operation_click(self, operation): # Guardar primer número if self.first_number is None: - self. first_number = value + self.first_number = value self.operator = operation self.current_value = "" return @@ -288,7 +288,7 @@ def equals_click(self): if self.operator == '+': result = add(self.first_number, second_number) - elif self. operator == '-': + elif self.operator == '-': result = subtract(self.first_number, second_number) elif self.operator == '*': result = multiply(self.first_number, second_number) @@ -422,7 +422,7 @@ def scientific_click(self, func): def main(): - root = tk. Tk() + root = tk.Tk() app = CalculatorGUI(root) root.mainloop() From 9dc6c26c1823abc731b41d0f8477b539928e397f Mon Sep 17 00:00:00 2001 From: jose andres meneces lopez Date: Fri, 28 Nov 2025 13:23:01 -0400 Subject: [PATCH 23/25] test: agregar tests de GUI con mocks de tkinter --- conftest.py | 82 +++++ test_gui_calculator.py | 718 +++++++++++++++++++++++++++++++++++++++++ 2 files changed, 800 insertions(+) create mode 100644 conftest.py create mode 100644 test_gui_calculator.py diff --git a/conftest.py b/conftest.py new file mode 100644 index 0000000..2800878 --- /dev/null +++ b/conftest.py @@ -0,0 +1,82 @@ +import pytest +import tkinter as tk + +class DummyRoot: + def __init__(self, *args, **kwargs): + self._title = "" + def title(self, t=None): + if t is not None: + self._title = t + return self._title + def geometry(self, *a, **k): + pass + def configure(self, *a, **k): + pass + def grid_rowconfigure(self, *a, **k): + pass + def grid_columnconfigure(self, *a, **k): + pass + def mainloop(self): + pass + def bind(self, *a, **k): + pass + def after(self, *a, **k): + pass + def destroy(self): + pass + +class DummyEntry: + def __init__(self, master=None, *args, **kwargs): + self._text = "" + def grid(self, *a, **k): + pass + def delete(self, start, end=None): + self._text = "" + def insert(self, index, text): + self._text = str(text) + # helper opcional para tests si quieren leer el contenido: + def get(self): + return self._text + +class DummyButton: + def __init__(self, master=None, *args, **kwargs): + pass + def grid(self, *a, **k): + pass + +class DummyLabel: + def __init__(self, master=None, *args, **kwargs): + self._text = kwargs.get('text', '') + def grid(self, *a, **k): + pass + def config(self, **kwargs): + if 'text' in kwargs: + self._text = kwargs['text'] + def get(self): + return self._text + +@pytest.fixture(autouse=True) +def replace_tkinter(): + """ + Fixture autouse que sustituye componentes gráficos por dummies durante los tests. + Esto evita la necesidad de tener Tcl/Tk instalado para ejecutar los tests unitarios. + """ + # Guardamos referencias originales para restaurar al finalizar el test + original_Tk = tk.Tk + original_Entry = tk.Entry + original_Button = tk.Button + original_Label = tk.Label + + tk.Tk = DummyRoot + tk.Entry = DummyEntry + tk.Button = DummyButton + tk.Label = DummyLabel + + try: + yield + finally: + # restaurar + tk.Tk = original_Tk + tk.Entry = original_Entry + tk.Button = original_Button + tk.Label = original_Label \ No newline at end of file diff --git a/test_gui_calculator.py b/test_gui_calculator.py new file mode 100644 index 0000000..c2a78e6 --- /dev/null +++ b/test_gui_calculator.py @@ -0,0 +1,718 @@ +"""Tests para la interfaz gráfica de la calculadora. + +Pruebas usando pytest para verificar funcionalidad de GUI. +Para correr los tests: pytest test_gui_calculator.py -v +""" +import tkinter as tk +from gui import CalculatorGUI + + +# ============================================================================ +# TESTS BÁSICOS +# ============================================================================ + +def test_initial_state(): + """Test del estado inicial de la calculadora.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + assert calc.current_value == "" + assert calc.operator is None + assert calc.first_number is None + + root.destroy() + + +def test_number_button_click(): + """Test de clicks en botones numéricos: simples y múltiples.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Un solo dígito + calc.number_button_click("5") + assert calc.current_value == "5" + + # Caso 2: Múltiples dígitos + calc.number_button_click("3") + calc.number_button_click("7") + assert calc.current_value == "537" + + calc.clear_click() + + # Caso 3: Ceros al inicio + calc.number_button_click("0") + calc.number_button_click("0") + calc.number_button_click("5") + assert calc.current_value == "005" + + root.destroy() + + +def test_decimal_click(): + """Test del botón de punto decimal.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Decimal con número + calc.number_button_click("3") + calc.decimal_click() + calc.number_button_click("5") + assert calc.current_value == "3.5" + + calc.clear_click() + + # Caso 2: Solo permite un punto decimal + calc.number_button_click("3") + calc.decimal_click() + calc.number_button_click("5") + calc.decimal_click() # Este no debería agregarse + assert calc.current_value == "3.5" + assert calc.current_value.count(".") == 1 + + calc.clear_click() + + # Caso 3: Decimal sin número (debe agregar 0) + calc.decimal_click() + assert calc.current_value == "0." + + root.destroy() + + +def test_clear_click(): + """Test del botón clear (C).""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Configurar estado con valores + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("3") + + # Limpiar todo + calc.clear_click() + + assert calc.current_value == "" + assert calc.operator is None + assert calc.first_number is None + + root.destroy() + + +def test_backspace_click(): + """Test del botón backspace (⌫).""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Borrar dígitos normales + calc.number_button_click("1") + calc.number_button_click("2") + calc.number_button_click("3") + calc.backspace_click() + assert calc.current_value == "12" + + calc.backspace_click() + assert calc.current_value == "1" + + # Caso 2: Backspace con display vacío + calc.clear_click() + calc.backspace_click() + assert calc.current_value == "" + + # Caso 3: Borrar número negativo + calc.operation_click("-") + calc.number_button_click("5") + calc.backspace_click() + assert calc.current_value == "-" + + root.destroy() + + +def test_gui_structure(): + """Test de que los componentes GUI se crean correctamente.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Verificar que el display existe + assert calc.display is not None + + # Verificar título de ventana + assert calc.root.title() == "Calculadora" + + root.destroy() + + +# ============================================================================ +# TESTS DE OPERACIONES BÁSICAS +# ============================================================================ + +def test_suma(): + """Test de operación suma: positivos, negativos y mixtos.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Suma básica positiva: 5 + 3 = 8 + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == 8.0 + + calc.clear_click() + + # Caso 2: Suma con negativo: -5 + 3 = -2 + calc.operation_click("-") + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == -2.0 + + calc.clear_click() + + # Caso 3: Suma de dos negativos: -5 + (-3) = -8 + calc.operation_click("-") + calc.number_button_click("5") + calc.operation_click("+") + calc.operation_click("-") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == -8.0 + + calc.clear_click() + + # Caso 4: Suma con cero: 0 + 5 = 5 + calc.number_button_click("0") + calc.operation_click("+") + calc.number_button_click("5") + calc.equals_click() + assert float(calc.current_value) == 5.0 + + root.destroy() + + +def test_resta(): + """Test de operación resta: positivos, negativos y mixtos.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Resta básica: 10 - 4 = 6 + calc.number_button_click("1") + calc.number_button_click("0") + calc.operation_click("-") + calc.number_button_click("4") + calc.equals_click() + assert float(calc.current_value) == 6.0 + + calc.clear_click() + + # Caso 2: Resta que resulta en negativo: 3 - 10 = -7 + calc.number_button_click("3") + calc.operation_click("-") + calc.number_button_click("1") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == -7.0 + + calc.clear_click() + + # Caso 3: Resta con negativo: -5 - 3 = -8 + calc.operation_click("-") + calc.number_button_click("5") + calc.operation_click("-") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == -8.0 + + calc.clear_click() + + # Caso 4: Resta de negativos: 5 - (-3) = 8 + calc.number_button_click("5") + calc.operation_click("-") + calc.operation_click("-") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == 8.0 + + root.destroy() + + +def test_multiplicacion(): + """Test de operación multiplicación: positivos, negativos y cero.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Multiplicación básica: 7 * 6 = 42 + calc.number_button_click("7") + calc.operation_click("*") + calc.number_button_click("6") + calc.equals_click() + assert float(calc.current_value) == 42.0 + + calc.clear_click() + + # Caso 2: Multiplicación por cero: 5 * 0 = 0 + calc.number_button_click("5") + calc.operation_click("*") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == 0.0 + + calc.clear_click() + + # Caso 3: Negativo * positivo: -2 * 3 = -6 + calc.operation_click("-") + calc.number_button_click("2") + calc.operation_click("*") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == -6.0 + + calc.clear_click() + + # Caso 4: Negativo * negativo: -2 * -3 = 6 + calc.operation_click("-") + calc.number_button_click("2") + calc.operation_click("*") + calc.operation_click("-") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == 6.0 + + root.destroy() + + +def test_division(): + """Test de operación división: positivos, negativos y error.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: División básica: 15 / 3 = 5 + calc.number_button_click("1") + calc.number_button_click("5") + calc.operation_click("/") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == 5.0 + + calc.clear_click() + + # Caso 2: División con decimales: 10 / 4 = 2.5 + calc.number_button_click("1") + calc.number_button_click("0") + calc.operation_click("/") + calc.number_button_click("4") + calc.equals_click() + assert float(calc.current_value) == 2.5 + + calc.clear_click() + + # Caso 3: División negativo/positivo: -10 / 2 = -5 + calc.operation_click("-") + calc.number_button_click("1") + calc.number_button_click("0") + calc.operation_click("/") + calc.number_button_click("2") + calc.equals_click() + assert float(calc.current_value) == -5.0 + + calc.clear_click() + + # Caso 4: División positivo/negativo: 10 / -2 = -5 + calc.number_button_click("1") + calc.number_button_click("0") + calc.operation_click("/") + calc.operation_click("-") + calc.number_button_click("2") + calc.equals_click() + assert float(calc.current_value) == -5.0 + + root.destroy() + + +def test_potencia(): + """Test de operación potencia: positivos y negativos.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Potencia básica: 2 ^ 3 = 8 + calc.number_button_click("2") + calc.operation_click("^") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == 8.0 + + calc.clear_click() + + # Caso 2: Potencia con base negativa: -2 ^ 3 = -8 + calc.operation_click("-") + calc.number_button_click("2") + calc.operation_click("^") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == -8.0 + + calc.clear_click() + + # Caso 3: Potencia decimal (raíz): 4 ^ 0.5 = 2 + calc.number_button_click("4") + calc.operation_click("^") + calc.number_button_click("0") + calc.decimal_click() + calc.number_button_click("5") + calc.equals_click() + assert float(calc.current_value) == 2.0 + + calc.clear_click() + + # Caso 4: Potencia a cero: 5 ^ 0 = 1 + calc.number_button_click("5") + calc.operation_click("^") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == 1.0 + + root.destroy() + + +# ============================================================================ +# TESTS DE FUNCIONES CIENTÍFICAS +# ============================================================================ + +def test_valor_absoluto(): + """Test de valor absoluto: negativos, positivos y cero.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: abs de negativo: abs(-5) = 5 + calc.operation_click("-") + calc.number_button_click("5") + calc.scientific_click("abs") + assert float(calc.current_value) == 5.0 + + calc.clear_click() + + # Caso 2: abs de positivo: abs(3) = 3 + calc.number_button_click("3") + calc.scientific_click("abs") + assert float(calc.current_value) == 3.0 + + calc.clear_click() + + # Caso 3: abs de decimal negativo: abs(-2.5) = 2.5 + calc.operation_click("-") + calc.number_button_click("2") + calc.decimal_click() + calc.number_button_click("5") + calc.scientific_click("abs") + assert float(calc.current_value) == 2.5 + + calc.clear_click() + + # Caso 4: abs de cero: abs(0) = 0 + calc.number_button_click("0") + calc.scientific_click("abs") + assert float(calc.current_value) == 0.0 + + root.destroy() + + +def test_valor_maximo(): + """Test de valor máximo: positivos, negativos y mixtos.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: max de positivos: max(10, 20) = 20 + calc.number_button_click("1") + calc.number_button_click("0") + calc.scientific_click("max") + calc.number_button_click("2") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == 20.0 + + calc.clear_click() + + # Caso 2: max con negativos: max(-5, -10) = -5 + calc.operation_click("-") + calc.number_button_click("5") + calc.scientific_click("max") + calc.operation_click("-") + calc.number_button_click("1") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == -5.0 + + calc.clear_click() + + # Caso 3: max negativo y positivo: max(-2, 3) = 3 + calc.operation_click("-") + calc.number_button_click("2") + calc.scientific_click("max") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == 3.0 + + calc.clear_click() + + # Caso 4: max de iguales: max(4, 4) = 4 + calc.number_button_click("4") + calc.scientific_click("max") + calc.number_button_click("4") + calc.equals_click() + assert float(calc.current_value) == 4.0 + + root.destroy() + + +def test_valor_minimo(): + """Test de valor mínimo: positivos, negativos y mixtos.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: min de positivos: min(10, 20) = 10 + calc.number_button_click("1") + calc.number_button_click("0") + calc.scientific_click("min") + calc.number_button_click("2") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == 10.0 + + calc.clear_click() + + # Caso 2: min con negativos: min(-5, -10) = -10 + calc.operation_click("-") + calc.number_button_click("5") + calc.scientific_click("min") + calc.operation_click("-") + calc.number_button_click("1") + calc.number_button_click("0") + calc.equals_click() + assert float(calc.current_value) == -10.0 + + calc.clear_click() + + # Caso 3: min negativo y positivo: min(-2, 3) = -2 + calc.operation_click("-") + calc.number_button_click("2") + calc.scientific_click("min") + calc.number_button_click("3") + calc.equals_click() + assert float(calc.current_value) == -2.0 + + calc.clear_click() + + # Caso 4: min de iguales: min(7, 7) = 7 + calc.number_button_click("7") + calc.scientific_click("min") + calc.number_button_click("7") + calc.equals_click() + assert float(calc.current_value) == 7.0 + + root.destroy() + + +# ============================================================================ +# TESTS DE CASOS EXTREMOS Y ERRORES +# ============================================================================ + +def test_division_por_cero(): + """Test de división por cero: debe mostrar error.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + calc.number_button_click("5") + calc.operation_click("/") + calc.number_button_click("0") + calc.equals_click() + + # Después del error, debería limpiar el estado + assert calc.current_value == "" + assert calc.operator is None + assert calc.first_number is None + + root.destroy() + + +def test_operaciones_consecutivas(): + """Test de operaciones encadenadas sin presionar igual.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # 5 + 3 + 2 = 10 (presionando + después de 3 debe calcular 5+3) + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("3") + calc.operation_click("+") # Debe calcular 5+3=8 primero + calc.number_button_click("2") + calc.equals_click() + + assert float(calc.current_value) == 10.0 + + root.destroy() + + +def test_decimales(): + """Test de operaciones con decimales: positivos y negativos.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Suma con decimales: 5.5 + 2.3 = 7.8 + calc.number_button_click("5") + calc.decimal_click() + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("2") + calc.decimal_click() + calc.number_button_click("3") + calc.equals_click() + result = float(calc.current_value) + assert abs(result - 7.8) < 0.0001 + + calc.clear_click() + + # Caso 2: Multiplicación con decimal negativo: -2.5 * 2 = -5 + calc.operation_click("-") + calc.number_button_click("2") + calc.decimal_click() + calc.number_button_click("5") + calc.operation_click("*") + calc.number_button_click("2") + calc.equals_click() + assert float(calc.current_value) == -5.0 + + calc.clear_click() + + # Caso 3: División con decimales: 10.5 / 2 = 5.25 + calc.number_button_click("1") + calc.number_button_click("0") + calc.decimal_click() + calc.number_button_click("5") + calc.operation_click("/") + calc.number_button_click("2") + calc.equals_click() + assert float(calc.current_value) == 5.25 + + root.destroy() + + +def test_numeros_negativos(): + """Test de manejo de números negativos al inicio.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # Caso 1: Ingresar número negativo directamente: -5 + calc.operation_click("-") + calc.number_button_click("5") + assert calc.current_value == "-5" + + calc.clear_click() + + # Caso 2: Número negativo decimal: -3.14 + calc.operation_click("-") + calc.number_button_click("3") + calc.decimal_click() + calc.number_button_click("1") + calc.number_button_click("4") + assert calc.current_value == "-3.14" + + calc.clear_click() + + # Caso 3: Solo signo menos (incompleto) + abs debe dar error + calc.operation_click("-") + calc.scientific_click("abs") + # Debe mostrar error + assert calc.current_value == "" + + root.destroy() + + +def test_equals_sin_operacion(): + """Test de presionar = sin operación previa.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + calc.number_button_click("5") + calc.equals_click() + + # No debería crashear, mantiene el número + assert calc.current_value == "5" + + root.destroy() + + +def test_equals_sin_segundo_numero(): + """Test de presionar = sin segundo número.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + calc.number_button_click("5") + calc.operation_click("+") + calc.equals_click() + + # Debería mostrar error y limpiar + assert calc.current_value == "" + + root.destroy() + + +def test_resultado_como_operando(): + """Test de usar resultado en nueva operación: (5 + 3) * 2 = 16.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # 5 + 3 = 8 + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("3") + calc.equals_click() + + # 8 * 2 = 16 + calc.operation_click("*") + calc.number_button_click("2") + calc.equals_click() + + assert float(calc.current_value) == 16.0 + + root.destroy() + + +def test_clear_durante_operacion(): + """Test de limpiar en medio de una operación.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + calc.number_button_click("5") + calc.operation_click("+") + calc.number_button_click("3") + calc.clear_click() + + # Todo debería estar limpio + assert calc.current_value == "" + assert calc.operator is None + assert calc.first_number is None + + root.destroy() + + +def test_numeros_grandes(): + """Test con números grandes.""" + root = tk.Tk() + calc = CalculatorGUI(root) + + # 99999 * 99999 = 9999800001 + for _ in range(5): + calc.number_button_click("9") + + calc.operation_click("*") + + for _ in range(5): + calc.number_button_click("9") + + calc.equals_click() + + # Solo verificamos que no crashee + assert calc.current_value != "" + assert float(calc.current_value) == 9999800001.0 + + root.destroy() \ No newline at end of file From 9d42a242e259f99fd9cc48afb21ec1c29e803b05 Mon Sep 17 00:00:00 2001 From: Jandres Date: Fri, 28 Nov 2025 19:54:04 -0400 Subject: [PATCH 24/25] =?UTF-8?q?docs:=20actualizar=20documentaci=C3=B3n?= =?UTF-8?q?=20para=20release=20v2.0.0?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 184 +++++++++++++++++++++- README.md | 421 ++++++++++++++++++++++++++++++++++++++++----------- 2 files changed, 509 insertions(+), 96 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 6916e85..7cb94c7 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -5,6 +5,177 @@ Todos los cambios notables en este proyecto serán documentados en este archivo. El formato está basado en [Keep a Changelog](https://keepachangelog.com/es-ES/1.0.0/), y este proyecto se adhiere a [Semantic Versioning](https://semver.org/spec/v2.0.0.html). +--- + +## [2.0.0] - 2025-11-28 + +### 🎉 Major Release - Interfaz Gráfica + Testing Automatizado + +Este release marca una evolución significativa del proyecto, introduciendo una interfaz gráfica completa, testing automatizado robusto, soporte de teclado y múltiples mejoras de usabilidad. + +### Agregado + +#### Interfaz Gráfica de Usuario (GUI) + +- **Calculadora visual** con tkinter (#15, #16, #17) + - Ventana principal con diseño moderno + - Display interactivo de alta resolución para números y resultados + - Grid de botones organizados por función + - Tema oscuro profesional con paleta de colores elegante (#18, #19, #20, #21) + - Diseño responsive con grid layout adaptable + +#### Funcionalidades de GUI + +- **Entrada numérica** por clicks en botones (#22, #31) +- **Botón decimal (.)** con validación para evitar múltiples puntos (#25, #32) +- **Lógica de operadores** matemáticos: +, -, \*, /, ^ (#26, #33) +- **Botones de control**: + - Clear (C): Limpia display y resetea estado (#28, #34) + - Backspace (⌫): Elimina último carácter (#28, #34) +- **Funciones científicas** integradas en GUI (#30, #35): + - Valor absoluto (abs) + - Máximo (max) + - Mínimo (min) +- **Soporte para números negativos** (#41, #45) + - Ingreso de números negativos en la GUI + - Manejo correcto de operaciones con negativos +- **Mejoras en manejo de múltiples números negativos** (#43) +- **Soporte completo de teclado** (#37, #47) + - Atajos para todos los números (0-9) + - Atajos para operadores (+, -, \*, /, ^) + - Enter o = para calcular resultado + - Escape para limpiar display + - Backspace para borrar último carácter + - Control completo mediante teclado o mouse + +#### Testing Automatizado + +- **Archivo `test_gui_calculator.py`** con suite completa de tests para GUI (#23, #48) + - Tests de clicks en botones numéricos + - Tests de botón Clear y Backspace + - Tests de operaciones básicas + - Tests de manejo de errores +- **Archivo `conftest.py`** con fixtures y mocks de Tkinter (#48) + - Clases dummy: DummyRoot, DummyEntry, DummyButton, DummyLabel + - Fixture `autouse` para sustituir componentes gráficos + - Tests ejecutables sin display gráfico (ideal para CI/CD) + - Compatibilidad con entornos headless + +#### CI/CD con GitHub Actions + +- **Pipeline automático** de integración continua (#36, #42) + - Workflow configurado para ramas `main` y `dev` + - Ejecución automática de tests en cada PR + - Validación continua de calidad de código + - Tests en ambiente headless sin Tcl/Tk + - Archivo `.github/workflows/ci.yml` configurado + +#### Documentación + +- **Guía de usuario** para la interfaz gráfica (#24, #40) + - Instrucciones de uso de la GUI + - Ejemplos de operaciones + - Atajos de teclado documentados +- **Mejoras en documentación** de funciones y manejo de errores (#29, #39) + +### Mejorado + +- **Experiencia de usuario** con dos interfaces disponibles: + - CLI (`main.py`): Interfaz de línea de comandos original + - GUI (`gui. py`): Interfaz gráfica moderna +- **Refactoring de lógica** redundante en manejo de operadores (#46) +- **Manejo visual de errores** en la GUI + - División por cero detectada y manejada + - Mensajes de error claros en el display + - Validación de entrada de decimales y negativos +- **Organización del proyecto** con separación clara CLI/GUI/tests +- **Calidad de código** con validación continua + +### Técnico + +- Implementación de clase `CalculatorGUI` con tkinter +- Sistema de grid layout responsivo para botones +- Binding de eventos de teclado en tkinter +- Fixtures de pytest con `autouse=True` +- Mocks de componentes Tkinter para testing sin GUI +- Workflow de GitHub Actions para CI/CD +- Integración completa entre GUI y módulo `calculator. py` + +### Mantenido + +- Interfaz de línea de comandos (CLI) en `main.py` +- Todas las funciones matemáticas originales +- Compatibilidad con Python 3.12+ +- Suite de tests unitarios (`test_calculator.py`) +- Templates de Issues y Pull Requests + +### Issues y PRs Incluidas + +**Issues Completadas:** + +- #15 - Implementar: Prototipo inicial de GUI +- #18 - Mejorar diseño: Ajustes y refinamientos de la GUI +- #20 - Mejora: Estilos visuales de la GUI +- #22 - Agregar función: Clicks de botones numéricos en GUI +- #23 - Pruebas: Testing manual completo de GUI +- #24 - Documentación: Guía de usuario para GUI +- #25 - Agregar función: Botón punto decimal en GUI +- #26 - Agregar función: Lógica de operadores en GUI +- #28 - Agregar funcionalidad: Botones Clear y Backspace +- #29 - Mejora: Manejo de errores y validaciones en GUI +- #30 - Agregar función: Funciones científicas en GUI +- #36 - Configurar CI/CD con GitHub Actions +- #37 - Agregar soporte de teclado para calculadora GUI +- #41 - Mejora: Números negativos sin operación de resta +- #43 - Error: Difícil ingresar múltiples números negativos + +**Pull Requests Mergeados:** + +- #48 - test: agregar tests de GUI con mocks de tkinter +- #47 - feat: agregar soporte de teclado para calculadora GUI +- #46 - refactor(gui): eliminar lógica redundante en el manejo de operadores +- #45 - feat(gui): soporte para números negativos y actualización de documentación +- #42 - feat: Configurar CI/CD con GitHub Actions +- #40 - docs: Añadir guía de usuario para la GUI +- #39 - refactor(gui): mejorar funciones unarias y manejo de errores +- #35 - feat: Agregar funciones científicas (abs, max, min) con integración en GUI +- #34 - feat: implementar botones C y ⌫ con su funcionalidad correspondiente +- #33 - feat(core): añadir lógica de operaciones (+, -, \*, /, ^) y soporte para botón "=" +- #32 - feat: implementar botón decimal con validación en la calculadora Tkinter +- #31 - feat: Implementar lógica de clic para entrada numérica +- #21 - feat: actualizar colores en gui.py +- #19 - feat: ajustar diseño según selección del equipo +- #17 - feat: Merge prototype calculator design from dev to main +- #16 - feat: agregar prototipo de GUI con diseño base + +### Agradecimientos + +Este release fue posible gracias a las contribuciones de: + +- **@Jandres25** (Jose Andres Meneces Lopez) + + - Coordinador del release + - Prototipo de GUI (#15, #16) + - CI/CD con GitHub Actions (#42) + - Testing automatizado de GUI (#23, #48) + - Soporte de teclado (#47) + +- **@Jhos3ph** + + - Funciones científicas en GUI (#35) + - Lógica de operaciones (#26, #33) + - Entrada numérica (#22, #31) + - Refactoring y optimizaciones (#39, #46) + - Soporte de números negativos (#45) + +- **@alexricardotapiacarita-ai** + - Diseño y estilos visuales (#18, #19, #20, #21) + - Botón decimal con validación (#25, #32) + - Botones Clear y Backspace (#28, #34) + - Documentación y guía de usuario (#24, #40) + +--- + ## [1.0.0] - 2025-11-04 ### Agregado @@ -28,11 +199,16 @@ y este proyecto se adhiere a [Semantic Versioning](https://semver.org/spec/v2.0. - Estructura del proyecto organizada - Sistema de pruebas configurado con pytest -## [Próximamente] +--- + +## [Próximamente] - v2.1.0 ### Planeado -- Interfaz gráfica usando tkinter -- Más operaciones matemáticas +- Soporte de operaciones con paréntesis en GUI (#44) +- Fix: Manejo de números decimales negativos (#49) +- Fix: Raíces pares de números negativos (#50) - Historial de operaciones -- Soporte para expresiones matemáticas complejas +- Más funciones matemáticas (raíz cuadrada, logaritmos, trigonometría) +- Temas personalizables (claro/oscuro) +- Exportar historial de cálculos diff --git a/README.md b/README.md index f813d2f..ce7ea24 100644 --- a/README.md +++ b/README.md @@ -1,89 +1,199 @@ -# Team Practice - Flujo de Trabajo Colaborativo +# Team Practice - Calculadora con GUI 🧮✨ -[![CI](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml/badge.svg)](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml) +[![CI/CD](https://github.com/WorkTeam01/team-practice/actions/workflows/ci. yml/badge.svg)](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml) +[![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/) +[![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) -Este repositorio está diseñado para practicar y aprender el flujo de trabajo colaborativo en equipo usando **Python** como lenguaje principal, elegido por su facilidad de uso y aprendizaje. +Proyecto colaborativo para practicar flujo de trabajo en equipo usando **Python**. Calculadora con interfaz gráfica (GUI), interfaz de línea de comandos (CLI), testing automatizado y CI/CD. + +--- ## 🎯 Propósito del Proyecto -- **Practicar Git Flow**: Ramas, merge requests, resolución de conflictos +- **Practicar Git Flow**: Ramas, pull requests, resolución de conflictos - **Aprender colaboración**: Code reviews, pair programming, comunicación efectiva - **Desarrollar en Python**: Aprovechar la simplicidad del lenguaje para enfocarse en las prácticas de trabajo en equipo -- **Establecer buenas prácticas**: Documentación, testing, estructura de proyecto +- **Establecer buenas prácticas**: Documentación, testing, CI/CD, estructura de proyecto -## 🚀 Configuración Inicial +--- -### Prerrequisitos +## ✨ Características v2.0.0 -- Python 3.12 o superior -- Git -- Editor de código (VS Code recomendado) +### 🖥️ Interfaz Gráfica (GUI) + +- **Calculadora visual moderna** con tkinter +- **Tema oscuro profesional** con diseño elegante +- **Display de alta resolución** para números y resultados +- **Soporte completo de teclado** + mouse +- **Funciones científicas** integradas (abs, max, min) +- **Manejo visual de errores** + +### ⌨️ Atajos de Teclado + +| Tecla | Acción | +| ------------------- | ----------------------- | +| `0-9` | Ingresar dígitos | +| `. ` | Punto decimal | +| `+` `-` `*` `/` `^` | Operaciones matemáticas | +| `Enter` o `=` | Calcular resultado | +| `Escape` | Limpiar display (Clear) | +| `Backspace` | Borrar último carácter | -### Características Implementadas +### 💻 Interfaz de Línea de Comandos (CLI) -- Interfaz gráfica con tkinter +- Interfaz interactiva en terminal +- Todas las operaciones matemáticas disponibles +- Manejo robusto de errores -### Próximas Características +### 🧪 Testing Automatizado -- Más operaciones matemáticas -- Historial de operaciones -- Soporte para expresiones matemáticas complejas +- Tests unitarios con **pytest** +- Tests de GUI con mocks de Tkinter +- Ejecutable sin interfaz gráfica (headless) +- Ideal para CI/CD -Para ver el historial detallado de cambios, consulta el archivo [CHANGELOG.md](CHANGELOG.md) +### 🤖 CI/CD con GitHub Actions + +- Ejecución automática de tests en cada PR +- Validación continua de calidad de código +- Pipeline configurado para `main` y `dev` + +--- + +## 🚀 Instalación y Uso + +### Prerrequisitos + +- Python 3.12 o superior +- pip (gestor de paquetes de Python) ### Instalación ```bash # Clonar el repositorio -git clone +git clone https://github.com/WorkTeam01/team-practice.git cd team-practice -# Instalar pytest (única dependencia necesaria) +# Instalar dependencias pip install pytest ``` +### Ejecutar la Aplicación + +#### Interfaz Gráfica (GUI) + +```bash +python gui.py +``` + +#### Interfaz de Línea de Comandos (CLI) + +```bash +python main.py +``` + +### Ejecutar Tests + +```bash +# Ejecutar todos los tests +pytest -v + +# Tests de calculadora básica +pytest test_calculator.py -v + +# Tests de GUI +pytest test_gui_calculator.py -v + +# Tests con cobertura +pytest --cov=. -v +``` + +--- + ## 📁 Estructura del Proyecto ``` team-practice/ -├── calculator.py # Código fuente principal -├── test_calculator.py # Pruebas unitarias -├── main.py # Programa principal -├── gui.py # Interfaz gráfica -├── .gitignore # Archivos ignorados por Git -├── .github/ # Configuración y templates de GitHub -│ ├── ISSUE_TEMPLATE/ # Plantillas para issues -│ ├── PULL_REQUEST_TEMPLATE/ # Plantillas para pull requests -│ ├── pull_request_template.md # Template para pull requests -│ └── REVIEW_COMMENTS.md # Plantillas para comentarios de revisión -├── README.md # Este archivo -├── CHANGELOG.md # Historial de cambios -└── LICENSE # Licencia del proyecto +├── calculator. py # Lógica de operaciones matemáticas +├── main.py # CLI - Interfaz de línea de comandos +├── gui.py # GUI - Interfaz gráfica con tkinter +├── test_calculator.py # Tests unitarios de calculator. py +├── test_gui_calculator.py # Tests de la interfaz gráfica +├── conftest.py # Fixtures de pytest (mocks de Tkinter) +├── . github/ +│ ├── workflows/ +│ │ └── ci.yml # Pipeline de CI/CD +│ ├── ISSUE_TEMPLATE/ # Plantillas para issues +│ ├── PULL_REQUEST_TEMPLATE/ # Plantillas para PRs +│ └── pull_request_template.md +├── README.md # Este archivo +├── CHANGELOG.md # Historial de cambios +├── LICENSE # Licencia MIT +└── . gitignore # Archivos ignorados por Git ``` -## 🤝 Flujo de Trabajo +--- + +## 🧮 Operaciones Disponibles + +### Operaciones Básicas + +- ➕ **Suma**: `a + b` +- ➖ **Resta**: `a - b` +- ✖️ **Multiplicación**: `a * b` +- ➗ **División**: `a / b` +- 🔢 **Potencia**: `a ^ b` + +### Funciones Científicas + +- `abs(x)` - Valor absoluto +- `max(a, b)` - Valor máximo entre dos números +- `min(a, b)` - Valor mínimo entre dos números + +### Manejo de Errores + +- ⚠️ División por cero detectada y manejada +- 🛡️ Validación de entrada en ambas interfaces +- 📢 Mensajes de error claros + +--- + +## 🤝 Flujo de Trabajo Colaborativo ### 1. Antes de comenzar -- Hacer pull de la rama main -- Crear una nueva rama para tu feature: `git checkout -b feature/nombre-descriptivo` +```bash +# Actualizar rama main +git checkout main +git pull origin main + +# Crear rama para tu feature +git checkout -b feature/nombre-descriptivo +``` ### 2. Durante el desarrollo -- Commits frecuentes y descriptivos -- Seguir convenciones de naming -- Escribir tests para nuevas funcionalidades +- ✅ Commits frecuentes y descriptivos +- ✅ Seguir [Conventional Commits](https://www.conventionalcommits.org/) +- ✅ Escribir tests para nuevas funcionalidades +- ✅ Ejecutar tests localmente antes de push ### 3. Al finalizar -- Push de tu rama -- Crear Pull Request -- Solicitar code review -- Mergear después de aprobación +```bash +# Push de tu rama +git push origin feature/nombre-descriptivo + +# Crear Pull Request en GitHub +# Solicitar code review +# Mergear después de aprobación +``` + +--- ## 📋 Convenciones -### Commits +### Commits (Conventional Commits) ``` tipo: descripción breve @@ -91,99 +201,226 @@ tipo: descripción breve Descripción más detallada si es necesario Ejemplos: -feat: agregar función de validación de email -fix: corregir error en cálculo de descuentos -docs: actualizar README con instrucciones de setup +feat: agregar soporte de teclado para calculadora +fix: corregir división por cero +docs: actualizar instrucciones de instalación +test: agregar tests para botones numéricos +refactor: eliminar lógica redundante en operadores ``` +**Tipos de commit:** + +- `feat`: Nueva funcionalidad +- `fix`: Corrección de bug +- `docs`: Cambios en documentación +- `test`: Agregar o modificar tests +- `refactor`: Refactorización de código +- `style`: Cambios de formato (sin afectar lógica) +- `chore`: Tareas de mantenimiento + ### Ramas -- `main`: Rama principal (siempre estable) +- `main`: Rama principal (siempre estable, producción) +- `dev`: Rama de desarrollo (integración) - `feature/nombre-funcionalidad`: Nuevas características - `bugfix/descripcion-del-bug`: Corrección de errores -- `hotfix/descripcion-urgente`: Correcciones urgentes +- `hotfix/descripcion-urgente`: Correcciones urgentes en producción +- `release/vX.Y.Z`: Preparación de releases -## 🧪 Testing +--- + +## 👥 Contribuir -### Ejecutar pruebas localmente +### Proceso de Contribución -```bash -# Ejecutar todas las pruebas -pytest -v +1. **Asigna o crea un issue** usando las plantillas proporcionadas + - Para bugs: usa la plantilla de "reporte de error" + - Para nuevas funciones: usa la plantilla de "nueva funcionalidad" +2. **Crea tu rama** desde `dev` (no desde `main`) -# Ejecutar pruebas de un archivo específico -pytest test_calculator.py -v + ```bash + git checkout dev + git pull origin dev + git checkout -b feature/mi-funcionalidad + ``` -# Ejecutar el programa principal -python main.py +3. **Implementa tu cambio** -# Ejecutar la interfaz gráfica -python gui.py -``` +- Escribe código limpio y documentado +- Sigue las convenciones del proyecto -### Integración Continua (CI) +4. **Agrega tests** si aplica -Este proyecto usa **GitHub Actions** para ejecutar automáticamente las pruebas en cada push y pull request. El badge de estado al inicio del README muestra si las pruebas están pasando. + ```bash + # Ejecutar tests localmente + pytest -v + ``` -- ✅ **Verde**: Todas las pruebas pasan -- ❌ **Rojo**: Hay pruebas fallando +5. **Actualiza documentación** si es necesario -Para más detalles, revisa el archivo de configuración en `.github/workflows/ci.yml` + - README.md + - Docstrings en el código + - CHANGELOG.md (si es un cambio significativo) -## 👥 Contribuir +6. **Crea Pull Request** usando la plantilla de PR + + - Describe claramente los cambios + - Referencia el issue relacionado + - Agrega capturas de pantalla si hay cambios visuales + +7. **Espera code review** + - Responde a los comentarios + - Realiza los cambios solicitados +8. **Mergea** después de aprobación del equipo + +--- + +## 📦 Releases + +El proyecto sigue **[Versionamiento Semántico](https://semver.org/)**: + +### Versión Actual: **v2.0.0** 🎉 + +**Changelog completo:** -1. Asigna o crea un issue usando las plantillas proporcionadas - - Para bugs: usa la plantilla "reporte-error.md" - - Para nuevas funciones: usa la plantilla "funcion-calculadora.md" -2. Crea tu rama desde main -3. Implementa tu cambio -4. Agrega tests si aplica -5. Actualiza documentación -6. Crea Pull Request usando la plantilla de PR -7. Espera code review -8. Mergea después de aprobación +- [CHANGELOG.md](CHANGELOG.md) - Historial detallado de todos los cambios + +**Versiones disponibles:** + +- **v2.0.0** (2025-11-28) - Interfaz gráfica + Testing + CI/CD +- **v1.0.0** (2025-11-04) - Calculadora CLI básica + +--- + +## 🧪 Testing + +### Ejecutar Tests + +```bash +# Todos los tests +pytest -v + +# Tests específicos +pytest test_calculator.py -v +pytest test_gui_calculator.py -v + +# Con cobertura +pytest --cov=. --cov-report=html -v + +# Tests en modo verbose con detalles +pytest -vv +``` -### 📦 Releases +### Estructura de Tests -El proyecto sigue versionamiento semántico. Última versión estable: v1.0.0 +- **`test_calculator.py`**: Tests de lógica matemática +- **`test_gui_calculator.py`**: Tests de interfaz gráfica +- **`conftest.py`**: Fixtures y mocks de Tkinter -- Operaciones básicas: suma, resta, multiplicación, división, potencia -- Funciones adicionales: valor máximo, valor mínimo, valor absoluto -- Sistema de manejo de errores -- Interfaz de línea de comandos interactiva +--- ## 📞 Comunicación - **Issues**: Para reportar bugs o proponer features - **Pull Requests**: Para code reviews y discusión técnica - **Comentarios en código**: Para aclaraciones específicas +- **Discussions**: Para temas generales del proyecto + +--- -## 🔧 Comandos Útiles +## 🔧 Comandos Útiles de Git ```bash # Ver estado del repositorio git status # Ver historial de commits -git log --oneline +git log --oneline --graph -# Cambiar a rama main y actualizar -git checkout main && git pull +# Cambiar a rama dev y actualizar +git checkout dev && git pull origin dev -# Ver diferencias +# Ver diferencias antes de commit git diff # Agregar cambios y commitear -git add . && git commit -m "tu mensaje" +git add . +git commit -m "tipo(alcance): descripción" + +# Actualizar rama feature con cambios de dev +git checkout feature/mi-rama +git merge dev + +# Ver ramas locales y remotas +git branch -a + +# Eliminar rama local +git branch -d feature/mi-rama ``` -## 📚 Recursos de Aprendizaje +--- + +## 🎓 Recursos de Aprendizaje + +### Git y Flujo de Trabajo - [Git Flow Cheatsheet](https://danielkummer.github.io/git-flow-cheatsheet/) +- [Conventional Commits](https://www.conventionalcommits. org/) +- [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow) + +### Python + - [Python Style Guide (PEP 8)](https://pep8.org/) -- [Python Style Guide (PEP 12)](https://www.python.org/dev/peps/pep-0012/) -- [Conventional Commits](https://www.conventionalcommits.org/) +- [Python Docstring Conventions (PEP 257)](https://peps.python.org/pep-0257/) +- [Tkinter Documentation](https://docs.python.org/3/library/tkinter.html) + +### Testing + +- [Pytest Documentation](https://docs.pytest.org/) +- [Testing Best Practices](https://docs.pytest.org/en/stable/goodpractices.html) --- -**¡Happy coding y colaboración efectiva!** 🐍✨ +## 🚧 Próximas Características (v2.1.0) + +- [ ] Soporte de operaciones con paréntesis (#44) +- [ ] Fix: Manejo de números decimales negativos (#49) +- [ ] Fix: Raíces pares de números negativos (#50) +- [ ] Historial de operaciones +- [ ] Más funciones matemáticas (√, log, sin, cos, tan) +- [ ] Temas personalizables (claro/oscuro) +- [ ] Exportar historial de cálculos + +--- + +## 🙏 Agradecimientos + +Este proyecto fue desarrollado colaborativamente por: + +- **[@Jandres25](https://github.com/Jandres25)** - Coordinador, GUI, CI/CD, Testing +- **[@Jhos3ph](https://github.com/Jhos3ph)** - Funciones científicas, Lógica, Refactoring +- **[@alexricardotapiacarita-ai](https://github.com/alexricardotapiacarita-ai)** - Diseño GUI, Documentación + +--- + +## 📄 Licencia + +Este proyecto está bajo la Licencia MIT. Ver [LICENSE](LICENSE) para más detalles. + +--- + +## 📊 Estadísticas del Proyecto + +- **Lenguaje**: Python 3.12+ +- **Framework GUI**: Tkinter +- **Framework Testing**: Pytest +- **CI/CD**: GitHub Actions +- **Commits**: 60+ +- **Pull Requests**: 24+ +- **Issues Cerradas**: 15+ + +--- + +**¡Happy coding y colaboración efectiva! ** 🐍✨🚀 + +Para más información, consulta el [CHANGELOG.md](CHANGELOG.md) para ver el historial completo de cambios. From e3931a7516ba5cc85693331410e6e73bc9dd4f18 Mon Sep 17 00:00:00 2001 From: Jandres Date: Sat, 29 Nov 2025 20:41:11 -0400 Subject: [PATCH 25/25] =?UTF-8?q?fix:=20corregir=20errores=20tipogr=C3=A1f?= =?UTF-8?q?icos=20en=20README=20y=20CHANGELOG?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- CHANGELOG.md | 4 ++-- README.md | 11 ++++++----- 2 files changed, 8 insertions(+), 7 deletions(-) diff --git a/CHANGELOG.md b/CHANGELOG.md index 7cb94c7..6afb671 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -82,7 +82,7 @@ Este release marca una evolución significativa del proyecto, introduciendo una - **Experiencia de usuario** con dos interfaces disponibles: - CLI (`main.py`): Interfaz de línea de comandos original - - GUI (`gui. py`): Interfaz gráfica moderna + - GUI (`gui.py`): Interfaz gráfica moderna - **Refactoring de lógica** redundante en manejo de operadores (#46) - **Manejo visual de errores** en la GUI - División por cero detectada y manejada @@ -99,7 +99,7 @@ Este release marca una evolución significativa del proyecto, introduciendo una - Fixtures de pytest con `autouse=True` - Mocks de componentes Tkinter para testing sin GUI - Workflow de GitHub Actions para CI/CD -- Integración completa entre GUI y módulo `calculator. py` +- Integración completa entre GUI y módulo `calculator.py` ### Mantenido diff --git a/README.md b/README.md index ce7ea24..67548c5 100644 --- a/README.md +++ b/README.md @@ -1,6 +1,6 @@ # Team Practice - Calculadora con GUI 🧮✨ -[![CI/CD](https://github.com/WorkTeam01/team-practice/actions/workflows/ci. yml/badge.svg)](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml) +[![CI/CD](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml/badge.svg)](https://github.com/WorkTeam01/team-practice/actions/workflows/ci.yml) [![Python 3.12+](https://img.shields.io/badge/python-3.12+-blue.svg)](https://www.python.org/downloads/) [![License: MIT](https://img.shields.io/badge/License-MIT-yellow.svg)](LICENSE) @@ -120,16 +120,17 @@ team-practice/ ├── test_calculator.py # Tests unitarios de calculator. py ├── test_gui_calculator.py # Tests de la interfaz gráfica ├── conftest.py # Fixtures de pytest (mocks de Tkinter) -├── . github/ +├── .github/ │ ├── workflows/ │ │ └── ci.yml # Pipeline de CI/CD │ ├── ISSUE_TEMPLATE/ # Plantillas para issues │ ├── PULL_REQUEST_TEMPLATE/ # Plantillas para PRs -│ └── pull_request_template.md +│ ├── pull_request_template.md +│ └── REVIEW_COMMENTS.md ├── README.md # Este archivo ├── CHANGELOG.md # Historial de cambios ├── LICENSE # Licencia MIT -└── . gitignore # Archivos ignorados por Git +└── .gitignore # Archivos ignorados por Git ``` --- @@ -365,7 +366,7 @@ git branch -d feature/mi-rama ### Git y Flujo de Trabajo - [Git Flow Cheatsheet](https://danielkummer.github.io/git-flow-cheatsheet/) -- [Conventional Commits](https://www.conventionalcommits. org/) +- [Conventional Commits](https://www.conventionalcommits.org/) - [GitHub Flow](https://docs.github.com/en/get-started/quickstart/github-flow) ### Python