Streamlit
1 Introduction to Streamlit
1.1 What is Streamlit?
1.2 Why use Streamlit?
1.3 Setting up the environment
1.4 Creating your first Streamlit app
2 Basic Components
2.1 Text elements
2.1 1 Displaying text
2.1 2 Formatting text
2.2 Data display elements
2.2 1 Displaying data frames
2.2 2 Displaying tables
2.3 Input widgets
2.3 1 Text input
2.3 2 Number input
2.3 3 Date input
2.3 4 Dropdown selection
2.3 5 Slider
2.3 6 Checkbox
2.3 7 Radio buttons
2.3 8 Buttons
3 Advanced Components
3.1 Interactive widgets
3.1 1 Multiselect
3.1 2 File uploader
3.1 3 Color picker
3.2 Media elements
3.2 1 Displaying images
3.2 2 Displaying videos
3.2 3 Displaying audio
3.3 Chart elements
3.3 1 Line chart
3.3 2 Bar chart
3.3 3 Area chart
3.3 4 Scatter chart
3.3 5 Map chart
4 Layout and Styling
4.1 Layout components
4.1 1 Columns
4.1 2 Tabs
4.1 3 Expander
4.2 Styling elements
4.2 1 Custom CSS
4.2 2 Theming
4.2 3 Adding custom fonts
5 State Management
5.1 Session state
5.1 1 Managing state across reruns
5.1 2 Persisting state
5.2 Caching
5.2 1 Caching functions
5.2 2 Caching data
6 Deployment
6.1 Deploying to Streamlit Sharing
6.1 1 Setting up Streamlit Sharing
6.1 2 Deploying your app
6.2 Deploying to other platforms
6.2 1 Deploying to Heroku
6.2 2 Deploying to AWS
6.2 3 Deploying to Google Cloud
7 Best Practices
7.1 Writing clean and maintainable code
7.2 Optimizing performance
7.3 Handling errors and exceptions
7.4 Version control with Git
8 Advanced Topics
8.1 Integrating with other libraries
8.1 1 Integrating with Pandas
8.1 2 Integrating with Plotly
8.1 3 Integrating with TensorFlow
8.2 Building complex apps
8.2 1 Creating multi-page apps
8.2 2 Handling authentication
8.2 3 Building interactive dashboards
8.3 Custom components
8.3 1 Creating custom widgets
8.3 2 Extending Streamlit with custom components
9 Case Studies
9.1 Building a data exploration app
9.2 Building a machine learning model deployment app
9.3 Building a real-time data visualization app
4 1 Layout Components Explained

1 Layout Components Explained

Key Concepts

st.sidebar

st.sidebar is used to create a sidebar in your Streamlit application. This sidebar can be used to place additional controls, information, or navigation elements that are not part of the main content area.

import streamlit as st

st.sidebar.title("Sidebar Title")
st.sidebar.write("This is a sidebar content.")
    

st.columns

st.columns allows you to create columns in your Streamlit application. This is useful for organizing content side by side, making it easier to compare or display related information.

import streamlit as st

col1, col2 = st.columns(2)

with col1:
    st.write("Column 1 content")

with col2:
    st.write("Column 2 content")
    

st.expander

st.expander is used to create expandable sections in your Streamlit application. This allows you to hide or show content based on user interaction, making your app more interactive and less cluttered.

import streamlit as st

with st.expander("Click to expand"):
    st.write("This content is hidden by default.")
    

st.container

st.container is used to create a container in your Streamlit application. This container can be used to group and style content, making it easier to manage and organize your app's layout.

import streamlit as st

container = st.container()
container.write("This content is inside a container.")
    

Examples

Example 1: Using st.sidebar

import streamlit as st

st.title("Main Content")
st.sidebar.title("Sidebar")
st.sidebar.write("This is a sidebar content.")
    

Example 2: Using st.columns

import streamlit as st

col1, col2, col3 = st.columns(3)

with col1:
    st.write("Column 1")

with col2:
    st.write("Column 2")

with col3:
    st.write("Column 3")
    

Example 3: Using st.expander

import streamlit as st

st.title("Expandable Content")

with st.expander("Click to expand"):
    st.write("This content is hidden by default.")
    

Example 4: Using st.container

import streamlit as st

st.title("Container Example")

container = st.container()
container.write("This content is inside a container.")
    

Analogies

Think of st.sidebar as a drawer in a desk where you keep additional tools or documents. The st.columns are like shelves in a library where books are organized side by side. The st.expander is like a folder that you can open and close to reveal or hide its contents. The st.container is like a box where you can group and store related items.

By mastering these layout components, you can create well-organized and interactive Streamlit applications that are easy to navigate and understand.