""" Streamlit Cheat Sheet App to summarise streamlit docs v1.0.0 There is also an accompanying png and pdf version https://github.com/daniellewisDL/streamlit-cheat-sheet v1.0.0 October 2021 Author: @daniellewisDL : https://github.com/daniellewisDL Contributors: arnaudmiribel : https://github.com/arnaudmiribel akrolsmir : https://github.com/akrolsmir nathancarter : https://github.com/nathancarter epogrebnyak : https://github.com/epogrebnyak """ import streamlit as st from pathlib import Path import base64 # Initial page config st.set_page_config( page_title='Streamlit cheat sheet', layout="wide", initial_sidebar_state="expanded", ) def main(): cs_sidebar() cs_body() return None # Thanks to streamlitopedia for the following code snippet def img_to_bytes(img_path): img_bytes = Path(img_path).read_bytes() encoded = base64.b64encode(img_bytes).decode() return encoded # sidebar def cs_sidebar(): st.sidebar.markdown('''[](https://streamlit.io/)'''.format(img_to_bytes("logomark_website.png")), unsafe_allow_html=True) st.sidebar.header('Streamlit cheat sheet') st.sidebar.markdown(''' Summary of the [docs](https://docs.streamlit.io/en/stable/api.html), as of [Streamlit v1.0.0](https://www.streamlit.io/). ''', unsafe_allow_html=True) st.sidebar.markdown('__How to install and import__') st.sidebar.code('$ pip install streamlit') st.sidebar.markdown('Import convention') st.sidebar.code('>>> import streamlit as st') st.sidebar.markdown('__Add widgets to sidebar__') st.sidebar.code(''' st.sidebar. >>> a = st.sidebar.radio(\'R:\',[1,2]) ''') st.sidebar.markdown('__Command line__') st.sidebar.code(''' $ streamlit --help $ streamlit run your_script.py $ streamlit hello $ streamlit config show $ streamlit cache clear $ streamlit docs $ streamlit --version ''') st.sidebar.markdown('__Pre-release features__') st.sidebar.markdown('[Beta and experimental features](https://docs.streamlit.io/en/stable/api.html#beta-and-experimental-features)') st.sidebar.code(''' pip uninstall streamlit pip install streamlit-nightly --upgrade ''') st.sidebar.markdown('''[st.cheat_sheet v1.0.0](https://github.com/daniellewisDL/streamlit-cheat-sheet) | Oct 2021''', unsafe_allow_html=True) return None ########################## # Main body of cheat sheet ########################## def cs_body(): # Magic commands col1, col2, col3 = st.columns(3) col1.subheader('Magic commands') col1.code('''# Magic commands implicitly `st.write()` \'\'\' _This_ is some __Markdown__ \'\'\' a=3 'dataframe:', data ''') # Display text col1.subheader('Display text') col1.code(''' st.text('Fixed width text') st.markdown('_Markdown_') # see * st.caption('Balloons. Hundreds of them...') st.latex(r\'\'\' e^{i\pi} + 1 = 0 \'\'\') st.write('Most objects') # df, err, func, keras! st.write(['st', 'is <', 3]) # see * st.title('My title') st.header('My header') st.subheader('My sub') st.code('for i in range(8): foo()') * optional kwarg unsafe_allow_html = True ''') # Display data col1.subheader('Display data') col1.code(''' st.dataframe(my_dataframe) st.table(data.iloc[0:10]) st.json({'foo':'bar','fu':'ba'}) st.metric(label="Temp", value="273 K", delta="1.2 K") ''') # Display charts col1.subheader('Display charts') col1.code(''' st.line_chart(data) st.area_chart(data) st.bar_chart(data) st.pyplot(fig) st.altair_chart(data) st.vega_lite_chart(data) st.plotly_chart(data) st.bokeh_chart(data) st.pydeck_chart(data) st.deck_gl_chart(data) st.graphviz_chart(data) st.map(data) ''') # Display media col1.subheader('Display media') col1.code(''' st.image('./header.png') st.audio(data) st.video(data) ''') # Display interactive widgets col2.subheader('Display interactive widgets') col2.code(''' st.button('Hit me') st.download_button('On the dl', data) st.checkbox('Check me out') st.radio('Radio', [1,2,3]) st.selectbox('Select', [1,2,3]) st.multiselect('Multiselect', [1,2,3]) st.slider('Slide me', min_value=0, max_value=10) st.select_slider('Slide to select', options=[1,'2']) st.text_input('Enter some text') st.number_input('Enter a number') st.text_area('Area for textual entry') st.date_input('Date input') st.time_input('Time entry') st.file_uploader('File uploader') st.color_picker('Pick a color') ''') col2.write('Use widgets\' returned values in variables:') col2.code(''' >>> for i in range(int(st.number_input('Num:'))): foo() >>> if st.sidebar.selectbox('I:',['f']) == 'f': b() >>> my_slider_val = st.slider('Quinn Mallory', 1, 88) >>> st.write(slider_val) ''') # Control flow col2.subheader('Control flow') col2.code(''' st.stop() ''') # Lay out your app col2.subheader('Lay out your app') col2.code(''' st.form('my_form_identifier') st.form_submit_button('Submit to me') st.container() st.columns(spec) >>> col1, col2 = st.columns(2) >>> col1.subheader('Columnisation') st.expander('Expander') >>> with st.expander('Expand'): >>> st.write('Juicy deets') ''') col2.write('Batch widgets together in a form:') col2.code(''' >>> with st.form(key='my_form'): >>> text_input = st.text_input(label='Enter some text') >>> submit_button = st.form_submit_button(label='Submit') ''') # Display code col2.subheader('Display code') col2.code(''' st.echo() >>> with st.echo(): >>> st.write('Code will be executed and printed') ''') # Display progress and status col3.subheader('Display progress and status') col3.code(''' st.progress(progress_variable_1_to_100) st.spinner() >>> with st.spinner(text='In progress'): >>> time.sleep(5) >>> st.success('Done') st.balloons() st.error('Error message') st.warning('Warning message') st.info('Info message') st.success('Success message') st.exception(e) ''') # Placeholders, help, and options col3.subheader('Placeholders, help, and options') col3.code(''' st.empty() >>> my_placeholder = st.empty() >>> my_placeholder.text('Replaced!') st.help(pandas.DataFrame) st.get_option(key) st.set_option(key, value) st.set_page_config(layout='wide') ''') # Mutate data col3.subheader('Mutate data') col3.code(''' DeltaGenerator.add_rows(data) >>> my_table = st.table(df1) >>> my_table.add_rows(df2) >>> my_chart = st.line_chart(df1) >>> my_chart.add_rows(df2) ''') # Optimize performance col3.subheader('Optimize performance') col3.code(''' @st.cache >>> @st.cache ... def fetch_and_clean_data(url): ... # Mutate data at url ... return data >>> # Executes d1 as first time >>> d1 = fetch_and_clean_data(ref1) >>> # Does not execute d1; returns cached value, d1==d2 >>> d2 = fetch_and_clean_data(ref1) >>> # Different arg, so function d1 executes >>> d3 = fetch_and_clean_data(ref2) ''') col3.subheader('Other key parts of the API') col3.markdown(''' [State API](https://docs.streamlit.io/en/stable/session_state_api.html)
[Theme option reference](https://docs.streamlit.io/en/stable/theme_options.html)
[Components API reference](https://docs.streamlit.io/en/stable/develop_streamlit_components.html)
[API cheat sheet](https://share.streamlit.io/daniellewisdl/streamlit-cheat-sheet/app.py)
''', unsafe_allow_html=True) return None # Run main() if __name__ == '__main__': main()