Zpět na projekty
TUIX v0.2.1Beta

Naposledy aktualizováno: 2026-05-20

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.contents

Funkce API

tuix_choice_set_options(obj, labels)

Nastaví seznam volitelných možností. Popisky se v C vrstvě hluboce kopírují.

ParametrTypPopis
objTuixObjectUkazatel na objekt
labelslist[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í.

ParametrTypPopis
objTuixObjectUkazatel na objekt
snapshotTuixInputSnapshotSnímek vstupu z input.get_snapshot()

tuix_choice_is_confirmed(obj)

Vrací, zda uživatel potvrdil výběr stiskem Enter.

Návratová hodnotaPopis
boolTrue pokud byl stisknut Enter, jinak False

tuix_choice_get_selected(obj)

Vrací index aktuálně zvýrazněné volby od 0.

Návratová hodnotaPopis
intIndex 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á hodnotaPopis
intIndex 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()