Spaces:
Sleeping
Sleeping
| """Frameworks for running multiple Streamlit applications as a single app. | |
| """ | |
| import streamlit as st | |
| from PIL import Image | |
| class MultiApp: | |
| """Framework for combining multiple streamlit applications. | |
| Usage: | |
| def foo(): | |
| st.title("Hello Foo") | |
| def bar(): | |
| st.title("Hello Bar") | |
| app = MultiApp() | |
| app.add_app("Foo", foo) | |
| app.add_app("Bar", bar) | |
| app.run() | |
| It is also possible keep each application in a separate file. | |
| import foo | |
| import bar | |
| app = MultiApp() | |
| app.add_app("Foo", foo.app) | |
| app.add_app("Bar", bar.app) | |
| app.run() | |
| """ | |
| def __init__(self): | |
| self.apps = [] | |
| def add_app(self, title, func): | |
| """Adds a new application. | |
| Parameters | |
| ---------- | |
| func: | |
| the python function to render this app. | |
| title: | |
| title of the app. Appears in the dropdown in the sidebar. | |
| """ | |
| self.apps.append({ | |
| "title": title, | |
| "function": func | |
| }) | |
| def run(self): | |
| st.sidebar.write(format_func=lambda app: app['title']) | |
| image = Image.open('giz_sdsn.jpg') | |
| st.sidebar.image(image) | |
| app = st.sidebar.radio( | |
| 'Go To', | |
| self.apps, | |
| format_func=lambda app: app['title']) | |
| app['function']() |