Skip to content

Builds an activities sidebar select box menu, i.e. a multi-page app using Streamlit's sidebar selectbox, as an alternative to the pages implementation. The available activities (pages) are read from a yaml file. These activities can be used to create a multi-page allowing easy configuration.

Notifications You must be signed in to change notification settings

jobelund/streamlit-activities-menu

Repository files navigation

Streamlit Activities Menu

Demo in the Streamlit community cloud

Builds an interactive activities menu to create a multi-page app using Streamlit's sidebar selectbox, as an alternative to the pages implementation. The available activities (pages) are read from a yaml file. These activities can be used to create a multi-page app using Streamlit.

It is recommended to add the app_activities.yaml at the same level as the main streamlit_app.py. Then, an activities folder is recommended to exist as a subdirectory where the streamlit_app.py is located.

The app_activities.yaml follows the following schema:

# Services for multipage Streamlit app
-
  name: 'Home Page'
  description: 'Home page'
  url: "home.py"

-
  name: 'Data Overview'
  description: 'Overall data overview'
  url: "overview.py"

- 
  name: 'Data Processing'
  description: 'Processing page'
  url: "processing.py"

# Add as required

In the streamlit_app.py:

import os
import streamlit as st
from streamlit_activities_menu import get_available_activities, build_activities_menu

# Load the available activities
ACTIVITIES_FILEPATH = st.secrets['PATHS']['ACTIVITIES_FILEPATH']
ACTIVITIES_DIRPATH = st.secrets['PATHS']['ACTIVITIES_DIRPATH']

# Load the `yaml` file with core activities    
core_activities = get_available_activities(
    activities_filepath=os.path.abspath(ACTIVITIES_FILEPATH)        
)

build_activities_menu(
    activities_dict=core_activities, 
    label='**Menu:**', 
    key='activitiesMenu', 
    activities_dirpath=os.path.abspath(ACTIVITIES_DIRPATH),
    disabled=False
    )

Subfolders

The recommended structure of the files within the subdirectory is:

my_app
|-- streamlit_app.py
|-- app_activities.yaml
|-- activities
|   |-- home.py
|   |-- overview.py
|   |-- processing.py

Mantainers

  • José M. Beltrán-Abaunza, PhD | Lund University, Department of Physical Geography and Ecosystem Science

About

Builds an activities sidebar select box menu, i.e. a multi-page app using Streamlit's sidebar selectbox, as an alternative to the pages implementation. The available activities (pages) are read from a yaml file. These activities can be used to create a multi-page allowing easy configuration.

Topics

Resources

Stars

Watchers

Forks

Packages

No packages published

Languages