Generic Expander Widget

Hi Peeps,

kinda created a super smooth generic layout for putting buttons and functions into a widget.

Maybe some of you can use it.


import time

def app(): 
st.title("Generic Expander Widget")

def get_hungry():
### do sports
with st.spinner('Keep Running'):
while time.time() < (time.time() + 60 * 1800):
    running()
st.success("Got Hungry")

def order_pizza():
### call pizza service
with st.spinner('While on Phone'):
calling()
st.success("Pizza ordered")

def wait():
with st.spinner('While wating'):
time.sleep(1.200)
st.success("Pizza arrived")

def enjoy_meal():
### enjoy your meal
with st.spinner('While eating'):
eat()
st.success("Be satisfied")

Implementing the widget:

  def multi_expander(cols, btn_names, funcs, key):
    my_expander = st.beta_expander(btn_names[key], expanded=True)
    with my_expander:
      if cols[key].button(btn_names[key], i):
        func_to_call = funcs[key]
        func_to_call()

### Setup ###
  cols = st.beta_columns(4)
  btn_names = ["Get Hungrey", "Order pizza", "Wait", "Enjoy meal"]
  fDict = {0: get_hungry, 1: order_pizza, 2: wait, 3: enjoy_meal}

  for i in range(0,4): 
    multi_expander(cols, btn_names, fDict, i)
2 Likes