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.1.tar.gz (7.2 kB view details)

Uploaded Source

File details

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

File metadata

  • Download URL: easy_tui-0.1.1.tar.gz
  • Upload date:
  • Size: 7.2 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.1.tar.gz
Algorithm Hash digest
SHA256 9898be5c9120fe03fc42981634dacaf955cbf8f57ee5093dde9c81ee2c59c047
MD5 797fa65bfc5caf661c7b0dfb6a666640
BLAKE2b-256 2a2e56b34f112f534154f481db4b43ef5f015dd60645be77efad62bcd27bcd9f

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