Layout API
v0.6 poskytuje nativní layout buildry a API pro umístění dětí. Row a Column používají stack API, SplitPane řídí dva panely a Grid umisťuje děti do pevných nebo vážených tracků.
Row a Column
Row a Column jsou stack layout parenty. Připojte existující děti nebo vytvořte nové child objekty přes stack helpery a pak dolaďte gap, padding, justify, align a volitelnou barvu pozadí.
row_uid = objects.create_object(content_builder.ROW, b'Main', 0.9, 0.2, 0.05, 0.05)
row = objects.get_object_by_uid(row_uid)
objects.tuix_stack_set_gap(row, 2)
objects.tuix_stack_set_padding(row, 1, 1, 1, 1)
objects.tuix_stack_set_justify(row, content_builder.JUSTIFY_SPACE_BETWEEN)
objects.tuix_stack_set_align(row, content_builder.ALIGN_STRETCH)
label_uid = objects.tuix_stack_add_object(row, b'Main', content_builder.TEXT, 1.0, 1.0)
buffer.set_buffer_layout_slot_by_uid(label_uid, grow=1.0, min_w=12)Override layout slotu
Layout slot popisuje, jak se dítě účastní parent layoutu. Podporuje grow, shrink, basis, min/max velikosti, align_self a grid placement pole.
| Funkce | Účel |
|---|---|
| buffer.set_buffer_layout_slot_by_uid(uid, ...) | Nastaví flex/grid slot hodnoty pro child buffer. |
| buffer.get_buffer_layout_slot_by_uid(uid) | Vrátí aktuální pole slotu jako dict. |
| buffer.set_buffer_layout_rect_by_uid(uid, left, top, width, height) | Nastaví explicitní override obdélníku v buňkách terminálu. |
| buffer.clear_buffer_layout_rect_by_uid(uid) | Zruší explicitní override obdélníku. |
Grid
Grid používá pevné a vážené tracky řádků/sloupců. Děti umisťujte přes buffer.set_buffer_grid_placement_by_uid(...) nebo grid poli v layout slotu.
grid_uid = objects.create_object(content_builder.GRID, b'Main', 0.9, 0.5, 0.35, 0.05)
grid = objects.get_object_by_uid(grid_uid)
objects.tuix_grid_set_columns(grid, [
(content_builder.GRID_TRACK_WEIGHT, 1),
(content_builder.GRID_TRACK_FIXED, 24),
])
objects.tuix_grid_set_rows(grid, [
(content_builder.GRID_TRACK_FIXED, 3),
(content_builder.GRID_TRACK_WEIGHT, 1),
])
objects.tuix_grid_set_gaps(grid, 1, 1)
child_uid = objects.tuix_grid_add_object(grid, b'Main', content_builder.TEXT, 1.0, 1.0)
buffer.set_buffer_grid_placement_by_uid(child_uid, row=1, col=0, row_span=1, col_span=2)SplitPane
SplitPane řídí dvě připojené děti. Nastavte orientaci, rozdělení poměrem nebo absolutními pixely, velikost dělítka, minimální velikosti panelů a barvy.
split_uid = objects.create_object(content_builder.SPLIT_PANE, b'Main', 0.9, 0.6, 0.2, 0.05)
split = objects.get_object_by_uid(split_uid)
objects.tuix_splitpane_set_orientation(split, content_builder.AXIS_HORIZONTAL)
objects.tuix_splitpane_set_split_ratio(split, 0.35)
objects.tuix_splitpane_set_min_sizes(split, 10, 10)Konstanty
| Konstanta | Význam |
|---|---|
| AXIS_HORIZONTAL / AXIS_VERTICAL | Orientace pro split pane a axis-aware widgety. |
| JUSTIFY_START / CENTER / END / SPACE_BETWEEN | Rozložení na hlavní ose pro Row a Column. |
| ALIGN_START / CENTER / END / STRETCH / AUTO | Zarovnání na vedlejší ose pro děti stacku. |
| GRID_TRACK_FIXED / GRID_TRACK_WEIGHT | Režimy velikosti grid tracků. |