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 2 2 Theming Explained

2 2 Theming Explained

Key Concepts

Explanation

1. Theming

Theming in Streamlit refers to the process of customizing the appearance of your application. This includes changing colors, fonts, and other visual elements to match your brand or personal preference.

2. Primary Color

The primary color is the main color used throughout your Streamlit application. This color is often used for buttons, links, and other interactive elements. You can set the primary color using the primaryColor parameter in the st.set_page_config function.

3. Background Color

The background color is the color of the application's background. This color sets the overall tone of your application and can be customized using the backgroundColor parameter in the st.set_page_config function.

4. Text Color

The text color is the color of the text displayed in your application. This color should be chosen to ensure readability against the background color. You can set the text color using the textColor parameter in the st.set_page_config function.

5. Custom CSS

Custom CSS allows you to further customize the appearance of your Streamlit application. By injecting custom CSS, you can change the style of specific elements, add animations, or create unique visual effects.

Examples

Example 1: Basic Theming

import streamlit as st

st.set_page_config(
    page_title="Custom Themed App",
    page_icon="🎨",
    layout="wide",
    initial_sidebar_state="expanded",
    menu_items={
        'Get Help': 'https://www.example.com/help',
        'Report a bug': "https://www.example.com/bug",
        'About': "# This is a header. This is an *extremely* cool app!"
    },
    primaryColor="#FF5733",
    backgroundColor="#F0F0F0",
    textColor="#333333"
)

st.title("Custom Themed App")
st.write("This is a custom themed Streamlit application.")
    

Example 2: Custom CSS

import streamlit as st

st.set_page_config(
    page_title="Custom CSS App",
    page_icon="🎨",
    layout="wide",
    initial_sidebar_state="expanded",
    menu_items={
        'Get Help': 'https://www.example.com/help',
        'Report a bug': "https://www.example.com/bug",
        'About': "# This is a header. This is an *extremely* cool app!"
    }
)

custom_css = """

"""

st.markdown(custom_css, unsafe_allow_html=True)

st.title("Custom CSS App")
st.write("This is a Streamlit application with custom CSS.")
    

Analogies

Think of theming as painting a room. The primary color is like the main color on the walls, the background color is like the color of the ceiling, and the text color is like the color of the furniture. Custom CSS is like adding decorative elements like wallpaper or curtains to make the room unique.

By mastering theming in Streamlit, you can create visually appealing and cohesive applications that reflect your brand or personal style.