import streamlit as st
from pathlib import Path
import base64
# Initial page config
st.set_page_config(
page_title='Streamlit组件清单',
page_icon="📖",
layout="wide",
initial_sidebar_state="expanded",
)
def main():
# cs_sidebar()
cs_body()
return None
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组件清单')
st.sidebar.markdown('''
[Streamlit文档页界面](https://docs.streamlit.io/en/stable/api.html), | [Streamlit首页](https://www.streamlit.io/).
''', unsafe_allow_html=True)
st.sidebar.markdown('__安装及引用方法__')
st.sidebar.code('pip install streamlit')
st.sidebar.markdown('引入Streamlit后的简写方法')
st.sidebar.code('import streamlit as st')
st.sidebar.markdown('__给侧边栏添加组件__')
st.sidebar.code('''
st.sidebar.
a = st.sidebar.radio(\'R:\',[1,2])
''')
st.sidebar.markdown('__命令行__')
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('__尝鲜版安装方法__')
st.sidebar.markdown('[Beta版和还在测试中功能](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(
'''[Streamlit组件清单v1.0.0](https://github.com/daniellewisDL/streamlit-cheat-sheet) | Oct 2021''',
unsafe_allow_html=True)
return None
##########################
# 主体部分
##########################
def cs_body():
col1, col2, col3 = st.columns(3)
col1.subheader('魔法命令')
col1.code('''# 最简单的魔法命令 `st.write()`
\'\'\' _This_ is some __Markdown__ \'\'\'
a=3
'dataframe:', data
''')
# Display text
col1.subheader('显示文字')
col1.code('''
st.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('我的title')
st.header('我的标题')
st.subheader('我的副标题')
st.code('for i in range(8): foo()')
*可选参数 unsafe_allow_html = True
''')
# Display data
col1.subheader('显示数据')
col1.code('''
st.dataframe(我的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('显示各类图表')
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('显示媒体文件')
col1.code('''
st.image('./header.png')
st.audio(data)
st.video(data)
''')
# Display interactive widgets
col2.subheader('交互类组件')
col2.code('''
st.button('需要点我的时候就点我一下')
st.download_button('下载按钮', data)
st.checkbox('检查框')
st.radio('单选按钮', [1,2,3])
st.selectbox('下拉式单选', [1,2,3])
st.multiselect('多选框', [1,2,3])
st.slider('滑动选择器', min_value=0, max_value=10)
st.select_slider('滑动选择器', options=[1,'2'])
st.text_input('通过我可以输入一些文字')
st.number_input('Enter a number')
st.text_area('通过我可以输入多行文字')
st.date_input('日期选择框')
st.time_input('时间选择框')
st.file_uploader('File uploader', type=["csv","png","xlsx","json"])
st.color_picker('点我选择一种颜色')
''')
col2.write('带返回值的组件:')
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('控制流组件')
col2.code('''
st.stop()
''')
# Lay out your app
col2.subheader('对你的APP进行布局')
col2.code('''
st.form('表单定义组件')
st.form_submit_button('表单提交按钮')
st.container()
st.columns(这里放要分几列的数字)
col1, col2 = st.columns(2)
col1.subheader('Columnisation')
st.expander('展开')
with st.expander('点我进行展开'):
st.write('次数可以写点什么')
''')
col2.write('在表单中使用其他组件:')
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('显示代码')
col2.code('''
st.echo()
with st.echo():
st.write('代码将被执行并打印结果')
''')
# Display progress and status
col3.subheader('显示进度及状态')
col3.code('''
st.progress(数字可以最大到100,意思是100%)
st.spinner()
with st.spinner(text='正在进行中'):
time.sleep(5)
st.success('完成')
st.balloons()
st.error('错误信息')
st.warning('警告信息')
st.info('通知信息')
st.success('成功信息')
st.exception(e)
''')
# Placeholders, help, and options
col3.subheader('预设内容, 帮助及操作选项')
col3.code('''
st.empty()
my_placeholder = st.empty()
my_placeholder.text('替换完成!')
st.help(pandas.DataFrame)
st.get_option(key)
st.set_option(key, value)
st.set_page_config(page_title="streamlit", page_icon="", layout='wide')#设置页面模式
''')
# Mutate data
col3.subheader('表格数据操作方法')
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('优化性能方法')
col3.code('''
@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('其他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
if __name__ == '__main__':
main()