基本组件
code(" 代码语句 ", language=' python ') 代码块,设置成python格式
metric(' 指标 ',100,300)
line_chart(data) 线图
bar_chart(data) 柱图
area_chart(data) 面积图
- button:按钮
- download_button:文件下载
- file_uploader:文件上传
- checkbox:复选框
- radio:单选框
- selectbox:下拉单选框
- multiselect:下拉多选框
- slider:滑动条
- select_slider:选择条
- text_input:文本输入框
- text_area:文本展示框
- number_input:数字输入框,支持加减按钮
- date_input:日期选择框
- time_input:时间选择框
- color_picker:颜色选择器
多媒体组件
- image:图片 st.image
- audio:音频 st.audio
- video:视频 st.video
状态进度条
- progress:进度条,如游戏加载进度
- spinner:等待提示
- balloons:页面底部飘气球,表示祝贺
- error:显示错误信息
- warning:显示报警信息
- info:显示常规信息
- success:显示成功信息
- exception:显示异常信息(代码错误栈)
页面,侧边栏,布局
- st.sidebar:侧边栏
- st.empty:空白占位
- st.markdown:Markdown
- st.columns:多列布局
- st.expander:展开收起
- st.beta_expander:展开收起
- st.container:容器
多页面交互
文中耗时操作可使用缓存------- @st.cache_resource或者 @st.cache_data
使用st.session_state.current_page
1.会话状态+条件渲染
import streamlit as st# 初始化会话状态
if 'current_page' not in st.session_state:st.session_state.current_page = 'home'# 侧边栏导航
with st.sidebar:st.title("导航")page = st.radio("选择页面",['home', 'data', 'charts', 'settings'])# 更新页面状态if page != st.session_state.current_page:st.session_state.current_page = pagest.experimental_rerun() # 强制重新运行# 页面内容
if st.session_state.current_page == 'home':st.title("首页")st.write("欢迎使用本应用!")elif st.session_state.current_page == 'data':st.title("数据页面")st.write("这里显示数据。")# 数据处理代码...elif st.session_state.current_page == 'charts':st.title("图表页面")st.write("这里显示图表。")# 图表代码...elif st.session_state.current_page == 'settings':st.title("设置页面")st.write("这里是设置选项。")# 设置代码...
2.字典映射+函数封装
import streamlit as st# 定义页面函数
def home_page():st.title("首页")st.write("欢迎来到首页!")# 首页内容...def data_page():st.title("数据页面")st.write("这里显示数据。")# 数据内容...def charts_page():st.title("图表页面")st.write("这里显示图表。")# 图表内容...def settings_page():st.title("设置页面")st.write("这里是设置选项。")# 设置内容...# 页面映射
pages = {"首页": home_page,"数据": data_page,"图表": charts_page,"设置": settings_page
}# 侧边栏导航
with st.sidebar:st.title("导航")selected_page = st.radio("选择页面", list(pages.keys()))# 渲染选中的页面
pages[selected_page]()
3.使用pages页面目录结构自动生成侧边栏
通过pages/目录自动生成导航
app/
├── main.py # 默认主页
└── pages/├── 1_home.py # 首页├── 2_data.py # 数据页面└── 3_about.py # 关于页面
streamlit根据文件名自动生成侧边栏导航
缓存
st.cache_data(ttl=3600)
:用于缓存数据处理函数(如读取 CSV),缓存1小时st.cache_resource
:用于缓存资源(如数据库连接、模型加载)