TUIX v0.2.0Beta
Začínáme s TUIX Core
Tento průvodce pokrývá předpoklady, základní způsob importu a standardní workflow pro tvorbu terminálových UI s TUIX Core v0.2.0.
Rychlá cestaPokud chcete nejkratší cestu, jděte v tomto pořadí: Instalace -> spusťte minimální příklad na této stránce -> pokračujte na První widget -> a teprve pak otevírejte API reference, když budete potřebovat detaily.
Doporučené pořadí čtení
- Nainstalujte balíček a ověřte, že engine.init() na vašem systému funguje.
- Projďte si workflow na této stránce, abyste pochopili model scéna -> widget -> hlavní smyčka.
- Než se ponoříte do low-level API stránek, postavte si Choice příklad z Prvního widgetu.
Předpoklady
- Python 3.10 nebo novější
- Terminál, který podporuje ANSI escape sekvence (většina moderních terminálů)
- Doporučuje se podpora Truecolor (24-bit RGB); automaticky je k dispozici fallback na ANSI256 a ANSI16
Uživatelé WindowsTUIX Core používá ReadConsoleInputW pro nativní zachytávání vstupu na Windows. ANSI renderování funguje v cmd.exe, PowerShellu i Windows Terminalu.
Způsob importu
TUIX Core vystavuje API přes jednotlivé moduly pod tuix.core. Neexistuje jediná top-level třída — importujete jen moduly, které potřebujete.
from tuix.core import engine, builders, scenes, registry, objects, buffers, inputStandardní workflow
Každá aplikace TUIX postupuje v této sekvenci:
- Inicializujte engine pomocí engine.init()
- Zaregistrujte vestavěné typy widgetů pomocí builders.register_standard()
- Vytvořte scénu pomocí scenes.init_scene(b"scene_name")
- Nastavte aktivní scénu přes registry.registry.current_scene_name = b"scene_name"
- Spusťte posluchač vstupu pomocí input.listen()
- Vytvořte widgety pomocí objects.create_object(builder, scene, width, height, margin_top, margin_left)
- Nakonfigurujte widgety pomocí jejich specifických API funkcí
- Spusťte engine.main_loop() ve smyčce pro renderování snímků a zpracování vstupu
- Uklid: uvolněte buffery, zastavte vstup a ukončete engine
Minimální příklad
from tuix.core import engine, builders, scenes, registry, objects, buffers, input
import time
# 1. Initialize
engine.init()
builders.register_standard()
# 2. Create and select a scene
scenes.init_scene(b"main")
registry.registry.current_scene_name = b"main"
# 3. Start input
input.listen()
# 4. Create a progressbar widget (full width, 10% height, centered at top)
uid = objects.create_object(
builders.PROGRESSBAR, b"main",
0.5, 0.1, # width_mod, height_mod
0.1, 0.25 # margin_top_mod, margin_left_mod
)
# 5. Get the object pointer for widget operations
buf = buffers.get_buffer_by_uid(uid)
obj = buf.contents.obj.contents
# 6. Set progress value
objects.tuix_progressbar_set_value(obj, 0.5)
# 7. Render loop
for i in range(100):
objects.tuix_progressbar_set_value(obj, i / 100.0)
engine.main_loop()
time.sleep(0.03)
# 8. Cleanup
buffers.free_buffer(b"main", uid)
input.stop()
engine.shutdown()Co se děje v každém snímku
Každé volání engine.main_loop() spouští v C tento pipeline:
- Načíst rozměry terminálu (detekce změny velikosti)
- Potvrdit čekající dávkové příkazy
- Spustit subcycle handlery pro aktivní widgety (stavové aktualizace, zpracování vstupu)
- Vyřešit geometrii: vynásobit modifikátory widgetů velikostí terminálu
- Zavolat build_content každého widgetu pro vytvoření pixelových bufferů
- Zkompozitovat všechny buffery scén do finálního framebufferu
- Delta-renderovat změněné řádky do terminálu
Další kroky
Přejděte na Instalaci pro instrukce nastavení a poté pokračujte tutoriálem První widget, kde vytvoříte interaktivní výběrové menu od nuly.
Kdy otevřít API referenceGetting Started a První widget používejte pro pochopení workflow. API stránky otevírejte ve chvíli, kdy už víte, jaký subsystém potřebujete: engine, scény, buildéry, vstup nebo konkrétní widget.