Volver a la página principal
jueves 6 febrero 2025
8

Cómo crear interfaces de consola en Python con curses

El módulo curses en Python permite crear interfaces de usuario basadas en texto en la terminal. Es útil para desarrollar aplicaciones interactivas como menús, paneles o incluso juegos en modo consola.

Instalación de curses

curses viene incluido en Python para sistemas Unix (Linux y macOS). En Windows, se debe instalar windows-curses:

pip install windows-curses

Uso de curses en Python

Para empezar a trabajar con curses, primero se debe importar el módulo:

import curses

Funciones principales de curses

Función Descripción
curses.initscr() Inicializa la pantalla.
curses.noecho() Evita que la entrada del usuario se muestre.
curses.cbreak() Permite la lectura instantánea de teclas sin presionar "Enter".
curses.endwin() Restaura la terminal a su estado original.
stdscr.addstr(y, x, text) Escribe texto en la pantalla en la posición (y, x).
stdscr.refresh() Refresca la pantalla para mostrar cambios.
stdscr.getch() Captura la entrada de teclado.

Ejemplo básico de curses

import curses

def main(stdscr):
    stdscr.clear()
    stdscr.addstr(5, 10, "¡Hola, curses en Python!")
    stdscr.refresh()
    stdscr.getch()  # Espera una tecla para salir

curses.wrapper(main)  # Maneja la inicialización y limpieza de curses

Capturar teclas y mover el cursor

def main(stdscr):
    curses.curs_set(0)  # Oculta el cursor
    stdscr.addstr(5, 10, "Presiona 'q' para salir")

    while True:
        key = stdscr.getch()  # Captura la tecla presionada
        if key == ord('q'):   # Si es 'q', salir
            break

curses.wrapper(main)

Consideraciones sobre curses

  • Funciona mejor en sistemas Unix; en Windows requiere windows-curses.
  • Maneja directamente la pantalla, por lo que los errores pueden desordenar la terminal.
  • curses.wrapper(func) ayuda a manejar excepciones y restaurar la terminal.

Referencias

Documentación oficial de Python: https://docs.python.org/3/library/curses.html

Etiquetas:
python
Compartir:
Creado por:
Author photo

Jorge García

Fullstack developer