streamlit常用方法
文章目录
一、前言
介绍一些常用的streamlit方法,后续会不断补充。
streamlit版本:1.37.1
1.1 stream启动指令
streamlit run your_app.py
二、基本框架
2.1 标题
import streamlit as st
st.title("标题")
st.header("较小标题")
st.subheader("小标题")
2.2 文本
markdown语法和普通文本输入
import streamlit as st
st.markdown('''
# streamlit
**streamlit**
''')
st.text(
'''
streamlit
'''
)
2.3 打印
st.write():Streamlit中用于在应用程序中展示文本和数据的通用函数。可以接受多种类型的参数,包括字符串、数字、DataFrame、图表等。
import streamlit as st
import matplotlib.pyplot as plt
import numpy as np
import pandas as pd
# 列表
st.write([6, 3])
# 字典
st.write({"key": "value"})
# 数据框(DataFrame)
df = pd.DataFrame({"Column 1": [6, 3], "Column 2": ["A", "B"]})
st.write(df)
#多参数用法
st.write( [6, 3], {"key": "value"})
2.4 json
import streamlit as st
st.json({
"type": "text",
"content": "数据提取么?为什么不用正则啊,你用正则不就全解决了么?",
"score": 0.6054257750511169,
"index": 1})
2.5 聊天框
st.chat_input():可以创建一个聊天框,自带发送按钮
prompt = st.chat_input("快输入你的内容")
2.6 创建对话头像
st.chat_message(“user”):创建两个头像。
“user”:固定参数,表示用户发送的消息。
“assistant”:表示ai助手,高版本只能用assistant,低版本可以用ai
高版本还有icon参数,可以自定义图标,我的版本不支持。
user_message = st.chat_message("user")
# ai_message = st.chat_message("ai")
ai_message = st.chat_message("assistant")
2.7 按钮
st.button():是Streamlit中用于创建按钮的函数。
import streamlit as st
if st.button('点我'):
st.write('今天是个好日子!')
2.8 单选框和复选框
单选
label(str):单选框文本,显示在按钮组上方,介绍单选框用途。
options(list,tuple,dict,orNone):可供选择选项的列表、元组或字典。
index(int):单选按钮组的初始选择索引,默认为0。即默认选中第一个选项。
format_func(function or None):是一个可选的函数,它接收每个选项的值作为输入,并返回特定格式作为该选项的显示文本,这里是str。
help(str or None):为单选按钮组提供帮助文本,将在用户悬停在组件上时显示。
import streamlit as st
select = st.radio(
label = '请输入您的选择',
options = ('苹果', '铅笔', '塑料袋'),
index = 2,
format_func = str,
help = '苹果可以吃'
)
复选
除此之外,还有复选框:
st.checkbox
2.9 下拉框
参数和单选框一样
import streamlit as st
select = st.selectbox(
label = '请输入您的选择',
options = ('苹果', '铅笔', '塑料袋'),
index = 2,
format_func = str,
help = '苹果可以吃'
)
2.10 多选框
选择过的选项会消失,且返回值为字典
import streamlit as st
options = st.multiselect(
label = '请问您喜欢吃什么水果',
options = ('梨', '苹果', '葡萄'),
default = None,
format_func = str,
help = '选择您喜欢吃的水果'
)
st.write('您喜欢吃的是', options)
2.11 滑动块、数字、文本输入框
滑动块
import streamlit as st
heigeht = st.slider(label='请输入您的身高',
min_value=0,
max_value=300,
value=0,
step=1,
help="请输入您的身高,单位:cm"
)
st.write('您的身高是', heigeht, 'cm')
数字
st.number_input():用于创建数字输入框,允许用户输入数字。
import streamlit as st
age = st.number_input(label = '请输入您的年龄',
min_value=0,
max_value=100,
value=0,
step=1,
help='请输入您的年龄'
)
st.write('您的年龄是', age)
单行文本
streamlit.text_input函数用于创建文本输入框,允许用户输入文本信息。
import streamlit as st
name = st.text_input('请输入用户名', max_chars=100, help='最大长度为100字符')
# 根据用户输入进行操作
st.write('您的用户名是', name)
多行文本
st.text_area():用于创建文本区域,允许用户输入多行文本信息。
import streamlit as st
text = st.text_area(label = '请输入文本',
value='请输入...',
height=5,
max_chars=200,
help='最大长度限制为200')
st.write('您的输入是', text)
2.12 日期输入框
value(datetime.dateorNone):可选。日期输入框的初始值,应为datetime.date类型。如果未提供,则默认为None。
min_value(datetime.date or None):可选。日期输入框的最小值,用户不能选择早于该日期的日期。如果未提供,则不设置最小值限制。
max_value(datetime.date or None):可选。日期输入框的最大值,用户不能选择晚于该日期的日期。如果未提供,则不设置最大值限制。
import streamlit as st
import datetime
birthday = st.date_input(label = '请输入您的出生年月',
value=None,
min_value=None,
max_value=datetime.date.today(),
help='请输入您的出生年月')
st.write('您的生日是:', birthday)
三、记忆函数(缓存修饰器)修改中
3.1 @st.cache_data
3.1.1 @st.cache_data 核心功能
用于缓存数据计算结果(如 DataFrame、数组、列表等),避免重复计算,提升应用性能。
适用场景:
- 数据读取(如从 CSV / 数据库加载数据)
- 数据预处理(如清洗、转换)
- 复杂计算(如机器学习模型训练)
3.1.2 参数详解
- ttl(生存时间)
类型:int 或 None
作用:指定缓存的过期时间(秒)。超过 ttl 后,再次调用函数会重新计算并更新缓存。
@st.cache_data(ttl=3600) # 缓存1小时后过期
def load_data():
return pd.read_csv("data.csv")
- max_entries(最大条目数)
类型:int 或 None
作用:限制缓存中存储的最大结果数量。超出时按 ** 先进先出(FIFO)** 规则清除旧条目。
@st.cache_data(max_entries=10) # 最多保留10条缓存结果
def process_data(data):
return data.apply(...)
- show_spinner(加载指示器)
类型:bool
作用:是否在函数计算时显示 Spinner(默认 True)。
@st.cache_data(show_spinner=False) # 不显示加载提示
def heavy_computation():
# 耗时操作
return result
-
persist(持久化缓存)
类型:bool
作用:
True:将缓存数据写入磁盘(默认路径:.streamlit/cache),应用重启后缓存仍然有效。
False:缓存仅存在于内存中,应用重启后清空。 -
experimental_allow_widgets(实验性支持小部件)
类型:bool
作用:
True:允许在被缓存的函数中使用 Streamlit 小部件(如 st.slider)。
False(默认):禁止在缓存函数中使用小部件,否则会报错。 -
hash_funcs(自定义哈希函数)
类型:dict 或 None
作用:对某些难以哈希的参数(如类实例、文件对象),自定义哈希逻辑。
from mymodule import CustomClass
def custom_hash(obj):
return hash(obj.id) # 根据对象ID生成哈希值
@st.cache_data(hash_funcs={CustomClass: custom_hash})
def process_custom_obj(obj):
return obj.data
四、提示信息函数
- streamlit提供了多种函数用于显示不同类型的消息,以呈现不同级别的通知和反馈。
- st.error: 用于显示错误消息。通常用于向用户报告发生的错误或异常。
- st.warning: 用于显示警告消息。通常用于向用户提供潜在的问题或需要注意的情况。
- st.info: 用于显示一般信息消息。可以用于提供一般性的信息或指导。
- st.success: 用于显示成功消息。通常用于向用户报告任务或操作成功完成。
- st.exception: 用于显示异常消息。当发生异常时,可以使用此函数将异常信息呈现给用户。
这些函数提供了一种直观的方式来向用户传达不同类型的信息,并帮助改善用户体验。使用适当的消息类型能够更清晰地传达信息的重要性和紧急性。