Skip to content

Slider

A themed slider between min and max (0 to 1 by default) that moves in step increments. on_change receives the new value while dragging.

ui.slider · Category: Forms · Full reference →

SliderSlider
  • For values where the exact number matters less than the feel: volume, opacity, zoom.
  • When users need to type an exact value, use a Number field.
import pyzed as pz
from pyzed import ui
class Player(pz.App):
def __init__(self):
self.volume = 70
def view(self):
return pz.row([
ui.slider(self.volume, lambda v: setattr(self, "volume", v), min=0, max=100, step=1),
ui.label(f"{self.volume:.0f}%"),
], spacing=12, align="center")
Slider: 0.0Slider: 0.0
0.0
Code
ui.slider(0.0, on_change, width=240)
Slider: 0.35Slider: 0.35
0.35
Code
ui.slider(0.35, on_change, width=240)
Slider: 1.0Slider: 1.0
1.0
Code
ui.slider(1.0, on_change, width=240)
Slider: min=0, max=100, step=1Slider: min=0, max=100, step=1
min=0, max=100, step=1
Code
ui.slider(70, on_change, min=0, max=100, step=1, width=240)
Slider: step=10Slider: step=10
step=10
Code
pz.column([ui.slider(40, on_change, min=0, max=100, step=10, width=240),
ui.muted("40 %")], spacing=6, align="center")

on_release runs when the drag ends: save or apply there instead of on every move.

Slider: show_value=TrueSlider: show_value=True
show_value=True
Code
ui.slider(70, on_change, min=0, max=100, step=1, show_value=True, width=240)
Slider: show_value="{:.0%}"Slider: show_value="{:.0%}"
show_value="{:.0%}"
Code
ui.slider(0.35, on_change, show_value="{:.0%}", width=240)
Slider: vertical=TrueSlider: vertical=True
vertical=True
Code
ui.slider(6, on_change, min=0, max=10, step=1, vertical=True, height=110, show_value=True)
Slider: disabled=TrueSlider: disabled=True
disabled=True
Code
ui.slider(0.6, on_change, disabled=True, width=240)

The pz.* widget underneath: no theme, every color and size is yours.

Slider: pz.sliderSlider: pz.slider
pz.slider
Code
pz.slider(0, 100, 60, on_change=on_change, width=240, accent="#e5c07b", knob_color="#ffffff")
Slider: pz.vertical_sliderSlider: pz.vertical_slider
pz.vertical_slider
Code
pz.vertical_slider(0, 100, 60, on_change=on_change, height=120, accent="#56b6c2")

Slider has 2 events of its own, listed below. Like every widget it also has the 18 common events (click, double_click, right_click, mouse_enter, drag, key_down, resize…), attached with .on(...): see Events and Events of every component.

Event Of Handler gets When
on_change ui.slider, pz.slider (value) Callable that receives the new value.
on_release ui.slider, pz.slider () Sent when the drag ends (save or apply there).

Handler gets is what Pyzed passes to your callable: () means nothing. Any handler can also be a message (a value that is not callable), which goes to update().

The same events written three ways. Imperative: methods of the app change self. Declarative: the handlers produce messages and one update() decides. Functional: a pure function draws an immutable state and asks for changes with set_state(...). See Imperative, declarative and functional.

class Player(pz.App):
def __init__(self):
self.volume = 70
self.saved = 70
def view(self):
return pz.row([
ui.slider(self.volume, lambda v: setattr(self, "volume", v), # on_change: while dragging
min=0, max=100, step=1,
on_release=lambda: setattr(self, "saved", self.volume)), # on_release: once
ui.label(f"{self.volume:.0f}% (saved {self.saved:.0f}%)"),
], spacing=12, align="center", width=420)
slider(
value,
on_change=None,
*,
min=0.0,
max=1.0,
step=0.01,
on_release=None,
vertical=False,
width=None,
height=None,
disabled=False,
show_value=False,
id=None,
theme=None,
)

A slider.

Property Default Description
value required Current value.
min 0.0 Minimum.
max 1.0 Maximum.
step 0.01 Step.
vertical False Stands it up.
width None Width: pixels, "fill", "shrink" or "fill:N" (proportion).
height None Height: pixels, "fill", "shrink" or "fill:N" (proportion).
disabled False Greys it out.
show_value False Shows the number next to it: True, or a format such as "{:.0%}".
id None Stable identifier used to focus or scroll it with a Command.
theme None Theme to use instead of the current one (pyzed.theme.current()).

Events: on_change, on_release (events).

Full reference →

slider(
min,
max,
value,
*,
step=1.0,
on_change=None,
on_release=None,
width=None,
height=None,
vertical=False,
accent=None,
bg=None,
knob_color=None,
border_color=None,
)

A slider between min and max.

Property Default Description
min required Minimum.
max required Maximum.
value required Current value.
step 1.0 Step.
width None Width: pixels, "fill", "shrink" or "fill:N" (proportion).
height None Height: pixels, "fill", "shrink" or "fill:N" (proportion).
vertical False Vertical orientation.
accent None Accent color (active part).
bg None Background color ("#rrggbb[aa]", (r, g, b[, a]) or "transparent").
knob_color None Knob color.
border_color None Border color.

Events: on_change, on_release (events).

Full reference →

vertical_slider(min, max, value, **kwargs)

A vertical slider (slider(..., vertical=True)).

Property Default Description
min required Minimum.
max required Maximum.
value required Current value.
**kwargs — Same as slider.

Full reference →