Skip to main content

A miniTUI with the ability to handle simple keyboard events in a terminal.

Project description

Easy TUI

Descripción

Easy TUI es una biblioteca de Python que permite crear interfaces de usuario de texto (TUI) simples y manejables. Utiliza simple_screen para manejar la pantalla y proporciona una estructura básica para crear y gestionar controles como botones, entradas y etiquetas.

Instalación

Puedes instalar la biblioteca utilizando pip:

pip install easy_tui

Uso

Inicialización

Primero, importa las bibliotecas necesarias y define algunas variables globales:

import easy_tui as eTUI
from easy_tui import controls

Crear Widgets

Define tus controles utilizando las clases proporcionadas. Por ejemplo, una etiqueta (Label), una entrada de texto (Entry), y un botón (KeyButton):

label = controls.Label(col=10, fila=5, text="Nombre:")
entry = controls.Entry(col=18, fila=5, label="Nombre")
button = controls.KeyButton(col=10, fila=10, key=eTUI.ENTER, label="Enviar", command=mi_funcion)

Configurar el Bucle Principal

Usa la función loop para manejar la interacción del usuario y actualizar la pantalla:

eTUI.loop()

Ejemplo Completo

import easy_tui as eTUI
from easy_tui import controls

hello = controls.Label(25, 3, "Hola, mundo")

nombre = controls.Entry(25, 4, "Nombre: ")
apellidos = controls.Entry(25, 5, "Apellidos: ")

def cambiaNombre():
    hello.text = f"Hola, {nombre.value} {apellidos.value}"

def limpiaTodo():
    nombre.value = ""
    apellidos.value = ""
    cambiaNombre()


f1 = controls.KeyButton(0, key=eTUI.F1, label="Reset", command=limpiaTodo)
f2 = controls.KeyButton(16,key=eTUI.F2, command=cambiaNombre, label="Saluda")


eTUI.loop()

Nota: Las teclas y controles para modificacion basica de la pantalla se heredan de simple_screen y pueden ser invocados usando eTUI. Así, el locate de simple_screen se transforma en

eTUI.locate(columna, fila, texto)

y las teclas F de simple_screen, por ejemplo F2 en

eTUI.F2

los atributos de pantalla, tales como A_INVERSE se usan igual

eTUI.A_INVERSE.on()
... (pintar cosas)
eTUI.A_INVERSE.off()

Documentación

Clases y Métodos Principales

Finalmente el ancho del control no se controla.

Control

  • __init__(self, col=0, fila=0, ancho=16, alto=1): Inicializa el control.
  • draw(self): Método abstracto para dibujar el control.

Label(Control)

  • __init__(self, col=0, fila=0, text="Label"): Inicializa una etiqueta.
  • draw(self): Dibuja la etiqueta en la posición especificada.

Entry(Control, TabulatableMixin)

  • __init__(self, col=0, fila=0, label="", ancho=16): Inicializa una entrada de texto.
  • draw(self): Dibuja la entrada de texto.
  • handle_input(self, key): Maneja la entrada del usuario.

KeyButton(Control, ButtonMixin)

  • __init__(self, col=0, fila=LAST_ROW, key=None, command=None, label=""): Inicializa un botón con una tecla específica.
  • click(self): Ejecuta el comando asociado al botón.
  • draw(self): Dibuja el botón.

Licencia

Este proyecto está licenciado bajo la Licencia MIT.


Con esta estructura, podrás crear aplicaciones de consola simples y efectivas usando simple_screen y easy_tui. ¡Disfruta programando!

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

easy_tui-0.1.4.tar.gz (7.3 kB view details)

Uploaded Source

File details

Details for the file easy_tui-0.1.4.tar.gz.

File metadata

  • Download URL: easy_tui-0.1.4.tar.gz
  • Upload date:
  • Size: 7.3 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: twine/5.1.0 CPython/3.12.3

File hashes

Hashes for easy_tui-0.1.4.tar.gz
Algorithm Hash digest
SHA256 e21e8f900e26ea76f9b2b8ab57e2d56eec181aec3624bcac92e875a52cdf0b20
MD5 497cb547f747cba710d1fe33828d08ab
BLAKE2b-256 dc39c2c798fd05d5f5355e9fc220615c5099462106db0691862d482091b74cbe

See more details on using hashes here.

Supported by

AWS Cloud computing and Security Sponsor Datadog Monitoring Depot Continuous Integration Fastly CDN Google Download Analytics Pingdom Monitoring Sentry Error logging StatusPage Status page