Skip to content

Agregar soporte de teclado para calculadora GUI #37

Description

@jandrescodes

🔧 Descripción

Implementar soporte completo de teclado para la calculadora GUI, permitiendo que los usuarios puedan usar la calculadora mediante el teclado además de los clicks del mouse.

Archivo a modificar: gui.py

Propósito:
Mejorar la experiencia de usuario permitiendo la entrada mediante teclado. Los usuarios podrán ingresar números, operadores y ejecutar cálculos usando únicamente el teclado, haciendo la calculadora más accesible y eficiente.


📋 Tareas

  • Implementar binding de eventos de teclado en gui.py
  • Mapear teclas numéricas (0-9) a number_button_click
  • Mapear teclas de operadores (+, -, *, /, ^) a operation_click
  • Mapear tecla Enter/Return a equals_click
  • Mapear tecla Escape o Delete a clear_click (si está implementado)
  • Mapear tecla Backspace a función de borrado (si está implementada)
  • Mapear tecla punto/coma (.) a decimal_click
  • Agregar feedback visual cuando se usa el teclado
  • Probar todas las combinaciones de teclas
  • Documentar atajos de teclado en README.md

💡 Implementación Sugerida

Agregar en el método __init__ de CalculatorGUI:

# Binding de eventos de teclado
self.root.bind('', self.handle_keypress)

Crear método para manejar teclas:

def handle_keypress(self, event):
    """Maneja eventos de teclado.
    
    Args:
        event: Evento de tkinter con información de la tecla presionada
    
    Examples:
        >>> # Usuario presiona '5' en el teclado
        >>> # Se ejecuta: number_button_click('5')
        >>> # Usuario presiona Enter
        >>> # Se ejecuta: equals_click()
    """
    key = event.char
    
    # Números
    if key.isdigit():
        self.number_button_click(key)
    
    # Operadores
    elif key in ['+', '-', '*', '/']:
        self.operation_click(key)
    
    # Potencia (puede ser '^' o '**')
    elif key == '^':
        self.operation_click('^')
    
    # Punto decimal
    elif key == '.':
        self.decimal_click()
    
    # Igual
    elif key in ['\r', '\n', '=']:  # Enter o '='
        self.equals_click()
    
    # Escape para limpiar
    elif event.keysym == 'Escape':
        self.clear_click()
    
    # Backspace para borrar
    elif event.keysym == 'BackSpace':
        self.backspace_click()

🎹 Atajos de Teclado Propuestos

Tecla Acción
0-9 Ingresar dígitos
. Punto decimal
+ Suma
- Resta
* Multiplicación
/ División
^ Potencia
Enter o = Calcular resultado
Escape Limpiar display
Backspace Borrar último carácter

🧪 Testing

Casos de prueba:

  • Ingresar números con teclado: 2, 3, 5 → Display: "235"
  • Operación completa: 5, +, 3, Enter → Display: "8"
  • Punto decimal: 3, ., 5 → Display: "3.5"
  • Limpiar con Escape funciona
  • Backspace elimina último carácter
  • Combinación mouse + teclado funciona correctamente
  • Operaciones encadenadas: 5, +, 3, +, 2, Enter → Display: "10"

Para probar:

python gui.py
# Usar solo el teclado para realizar cálculos

📖 Recursos


🔗 Referencias

ClickUp Task: https://app.clickup.com/t/86ad30fen

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

funcionalidadNuevas funcionalidadesguiFuncionalidades de la interfaz gráficamejoraMejora a funciones existentes

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions