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}")