TUIX v0.2.0Beta
Widget Volba
Výběrové menu ovládané klávesnicí. Uživatelé se pohybují šipkami nahoru/dolů a potvrzují Enterem.
Vytvoření widgetu Volba
from tuix.core import builders, objects, buffers
uid = objects.create_object(
builders.CHOICE, b"main",
0.4, 0.5, # width: 40%, height: 50%
0.25, 0.3 # margin_top: 25%, margin_left: 30%
)
buf = buffers.get_buffer_by_uid(uid)
obj = buf.contents.obj.contentsFunkce API
tuix_choice_set_options(obj, labels)
Nastaví seznam volitelných možností. Popisky se v C vrstvě hluboce kopírují.
| Parametr | Typ | Popis |
|---|---|---|
| obj | TuixObject | Ukazatel na objekt |
| labels | list[bytes] | Seznam bajtových řetězců s popisky možností |
objects.tuix_choice_set_options(obj, [b"Red", b"Green", b"Blue"])tuix_choice_feed_input(obj, snapshot)
Zpracuje snímek vstupu. Obsluhuje šipky nahoru/dolů a Enter pro potvrzení.
| Parametr | Typ | Popis |
|---|---|---|
| obj | TuixObject | Ukazatel na objekt |
| snapshot | TuixInputSnapshot | Snímek vstupu z input.get_snapshot() |
tuix_choice_is_confirmed(obj)
Vrací, zda uživatel potvrdil výběr stiskem Enter.
| Návratová hodnota | Popis |
|---|---|
| bool | True pokud byl stisknut Enter, jinak False |
tuix_choice_get_selected(obj)
Vrací index aktuálně zvýrazněné volby od 0.
| Návratová hodnota | Popis |
|---|---|
| int | Index vybrané volby od 0, nebo -1 pokud nic není vybráno |
tuix_choice_get_result(obj)
Vrací index potvrzené volby. Platné jen po tom, co is_confirmed vrátí True.
| Návratová hodnota | Popis |
|---|---|
| int | Index potvrzené volby od 0, nebo -1 pokud ještě nebyla potvrzena |
tuix_choice_reset(obj)
Resetuje widget: vymaže potvrzení a vrátí výběr na index 0. Užitečné pro opakované použití stejného widgetu.
Kompletní příklad
from tuix.core import engine, builders, scenes, registry, objects, buffers, input
engine.init()
builders.register_standard()
scenes.init_scene(b"main")
registry.registry.current_scene_name = b"main"
input.listen()
uid = objects.create_object(builders.CHOICE, b"main", 0.4, 0.5, 0.25, 0.3)
buf = buffers.get_buffer_by_uid(uid)
obj = buf.contents.obj.contents
options = [b"Red", b"Green", b"Blue", b"Yellow", b"Cyan"]
objects.tuix_choice_set_options(obj, options)
while True:
snap = input.get_snapshot()
objects.tuix_choice_feed_input(obj, snap)
engine.main_loop()
if objects.tuix_choice_is_confirmed(obj):
break
selected = objects.tuix_choice_get_selected(obj)
print(f"Selected: {options[selected].decode()}")
buffers.free_buffer(b"main", uid)
scenes.free_scene(b"main")
input.stop()
engine.shutdown()