Zpět na projekty
TUIX v0.2.0Beta

Naposledy aktualizováno: 2026-05-20

Widget Vstup

Jednořádkové textové pole se zástupným textem, pohybem kurzoru a detekcí odeslání.

Vytvoření widgetu Vstup

from tuix.core import builders, objects, buffers

uid = objects.create_object(
    builders.INPUT, b"main",
    0.4, 0.1,    # width: 40%, height: 10%
    0.45, 0.3    # margin_top: 45%, margin_left: 30%
)

buf = buffers.get_buffer_by_uid(uid)
obj = buf.contents.obj.contents

Funkce API

tuix_input_set_placeholder(obj, text)

Nastaví zástupný text zobrazený, když je vstup prázdný.

ParametrTypPopis
objTuixObjectUkazatel na objekt
textbytesZástupný text (např. b"Type your name...")
objects.tuix_input_set_placeholder(obj, b"Enter your name...")

tuix_input_feed_input(obj, snapshot)

Zpracuje snímek vstupu. Podporuje psaní znaků, Backspace, Delete, pohyb kurzoru šipkami vlevo/vpravo, Home/End a Enter pro odeslání.

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

tuix_input_is_submitted(obj)

Vrací, zda uživatel odeslal vstup stiskem Enter.

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

tuix_input_get_text(obj)

Vrací aktuální textový obsah vstupního pole. Nikdy nevrací None — pokud nebyl zadán žádný text, vrací prázdný řetězec.

Návratová hodnotaPopis
str/bytesAktuální textový obsah

tuix_input_get_result(obj)

Vrací odeslaný text. Platí pouze po tom, co is_submitted vrátí True.

Návratová hodnotaPopis
str/bytes | NoneOdeslaný text, pokud byl stisknut Enter, jinak None

tuix_input_reset(obj)

Resetuje widget: vymaže text, resetuje stav odeslání a obnoví placeholder.

Podporované klávesy

KlávesaAkce
Libovolný tisknutelný znakVložit na pozici kurzoru
BackspaceSmazat znak před kurzorem
DeleteSmazat znak na pozici kurzoru
Šipka vlevoPosunout kurzor doleva
Šipka vpravoPosunout kurzor doprava
HomePřesunout kurzor na začátek
EndPřesunout kurzor na konec
EnterOdeslat vstup

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.INPUT, b"main", 0.4, 0.1, 0.45, 0.3)
buf = buffers.get_buffer_by_uid(uid)
obj = buf.contents.obj.contents

objects.tuix_input_set_placeholder(obj, b"Type your name...")

while True:
    snap = input.get_snapshot()
    objects.tuix_input_feed_input(obj, snap)
    engine.main_loop()
    if objects.tuix_input_is_submitted(obj):
        break

text = objects.tuix_input_get_text(obj)
print(f"You entered: {text}")

buffers.free_buffer(b"main", uid)
scenes.free_scene(b"main")
input.stop()
engine.shutdown()