Py.Cafe

rob.on.lists/

solara-switch-button-interaction

Solara Switch Button Interaction

DocsPricing
  • app.py
  • requirements.txt
app.py
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
import solara

def reactive_value(name,labels,init):
    r_v = solara.reactive(init)
    setattr(r_v,'name',name)
    setattr(r_v,'labels',labels)
    return r_v

@solara.component
def SwitchButton(value):
    '''button with a label string that shows the current state.
    take (informational) name, label list and initial value from a reactive_value object'''
    use_value, set_use_value = solara.use_state(value.value)
    def my_click_handler():
        set_use_value(1 - use_value)
    button = solara.Button(label=value.labels[use_value],
                    on_click=my_click_handler)
    value.set(use_value)
    return button

uitaan = reactive_value('uitaan',["uit","aan"],0)
linksrechts = reactive_value('linksrechts',["links","rechts"],1)

@solara.component
def Page():
    with solara.Row():
        SwitchButton(value=uitaan)
        SwitchButton(value=linksrechts)

    solara.Markdown(f"{uitaan.name}: {uitaan.value}")
    solara.Markdown(f"{linksrechts.name}: {linksrechts.value}")