Not only can you add interactivity to your app with widgets, you can organize them into a sidebar. Elements can be passed to st.sidebar using object notation and with notation.

The following two snippets are equivalent:

# Object notation
# "with" notation
with st.sidebar:

Each element that's passed to st.sidebar is pinned to the left, allowing users to focus on the content in your app.



The sidebar is resizable! Drag and drop the right border of the sidebar to resize it! ↔️

Here's an example of how you'd add a selectbox and a radio button to your sidebar:

import streamlit as st

# Using object notation
add_selectbox = st.sidebar.selectbox(
    "How would you like to be contacted?",
    ("Email", "Home phone", "Mobile phone")

# Using "with" notation
with st.sidebar:
    add_radio =
        "Choose a shipping method",
        ("Standard (5-15 days)", "Express (2-5 days)")


The only elements that aren't supported using object notation are st.echo, st.spinner, and st.toast. To use these elements, you must use with notation.

Here's an example of how you'd add st.echo and st.spinner to your sidebar:

import streamlit as st

with st.sidebar:
    with st.echo():
        st.write("This code will be printed to the sidebar.")

    with st.spinner("Loading..."):

Still have questions?

Our forums are full of helpful information and Streamlit experts.

Was this page helpful?

editEdit this page on GitHub