SliderGrid <: Block

A grid of horizontal Sliders, where each slider has one name label on the left, and a value label on the right.

Each NamedTuple you pass specifies one Slider. You always have to pass range and label, and optionally a format for the value label. Beyond that, you can set any keyword that Slider takes, such as startvalue.

The format keyword can be a String with Formatting.jl style, such as "{:.2f}Hz", or a function.


SliderGrid(fig_or_scene, nts::NamedTuple...; kwargs...)


sg = SliderGrid(fig[1, 1],
    (label = "Amplitude", range = 0:0.1:10, startvalue = 5),
    (label = "Frequency", range = 0:0.5:50, format = "{:.1f}Hz", startvalue = 10),
    (label = "Phase", range = 0:0.01:2pi,
        format = x -> string(round(x/pi, digits = 2), "π"))

Working with slider values:

on(sg.sliders[1].value) do val
    # do something with `val`


(type ?SliderGrid.x in the REPL for more information about attribute x)

alignmode, halign, height, tellheight, tellwidth, valign, value_column_width, width

The column with the value labels is automatically set to a fixed width, so that the layout doesn't jitter when sliders are dragged and the value labels change their widths. This width is chosen by setting each slider to a few values and recording the maximum label width. Alternatively, you can set the width manually with attribute value_column_width.

using GLMakie

fig = Figure()

ax = Axis(fig[1, 1])

sg = SliderGrid(
    fig[1, 2],
    (label = "Voltage", range = 0:0.1:10, format = "{:.1f}V", startvalue = 5.3),
    (label = "Current", range = 0:0.1:20, format = "{:.1f}A", startvalue = 10.2),
    (label = "Resistance", range = 0:0.1:30, format = "{:.1f}Ω", startvalue = 15.9),
    width = 350,
    tellheight = false)

sliderobservables = [s.value for s in sg.sliders]
bars = lift(sliderobservables...) do slvalues...

barplot!(ax, bars, color = [:yellow, :orange, :red])
ylims!(ax, 0, 30)




Defaults to Inside()

The align mode of the block in its parent GridLayout.


Defaults to :center

The horizontal alignment of the block in its suggested bounding box.


Defaults to Auto()

The height setting of the block.


Defaults to true

Controls if the parent layout can adjust to this block's height


Defaults to true

Controls if the parent layout can adjust to this block's width


Defaults to :center

The vertical alignment of the block in its suggested bounding box.


Defaults to automatic

The width of the value label column. If automatic, the width is determined by sampling a few values from the slider ranges and picking the largest label size found.


Defaults to Auto()

The width setting of the block.