Skip to content

More controls

More controls

class Settings(pz.App):
def __init__(self):
self.language = "Rust"
self.font = 14
self.indentation = "a"
self.alignment = "c"
self.advanced = True
def view(self):
return pz.column([
pz.row([
ui.select(["Python", "Rust", "TypeScript"], self.language,
lambda v: setattr(self, "language", v), width=160),
ui.number_field(self.font, lambda v: setattr(self, "font", v), min=8, max=32, suffix="px"),
ui.split_button("Run", self.run, self.open_menu, icon="play"),
], spacing=10, align="center"),
ui.radio_group([("a", "Spaces"), ("b", "Tabs")], self.indentation,
lambda v: setattr(self, "indentation", v), horizontal=True),
ui.toggle_group([("l", "align-left"), ("c", "align-center"), ("r", "align-right")],
self.alignment, lambda v: setattr(self, "alignment", v)),
pz.row([ui.chip("python", icon="tag", selected=True),
ui.chip("rust", on_remove=self.remove_tag),
ui.chip("iced", on_press=self.filter)], spacing=6),
ui.disclosure("Advanced options", ui.muted("Collapsible content."), open=self.advanced,
on_toggle=lambda: setattr(self, "advanced", not self.advanced)),
], spacing=14)
Component Purpose
ui.select(options, selected, on_select) Themed dropdown. Calls on_select with the chosen option.
ui.radio_group(options, selected, on_select) Mutually exclusive options. options are strings or (value, label) pairs. horizontal=True lays them out in a row.
ui.number_field(value, on_change) Number with −/+ buttons, min/max limits, step and suffix.
ui.split_button(content, on_press, on_menu) Main action plus a chevron for more options (usually opens a ui.popover).
ui.toggle_group(options, selected, on_select) Icon-only segmented group: options are (value, icon) pairs.
ui.chip(content) Compact tag. on_press makes it clickable and on_remove adds an ✕.
ui.disclosure(title, content, open=) Collapsible section. The open/closed state is yours: change it in on_toggle.

For the basic controls (input, switch, slider…) see Forms. Full reference: Controls.