下载与安装
需要电脑中有uv或pip包管理器.
若使用uv环境,使用这个命令.
uv pip install streamlit==1.32.0 -i https://pypi.tuna.tsinghua.edu.cn/simple什么是Streamlit?
Streamlit是什么呢?
Streamlit是一款开源Python框架,专为快速搭建前端界面打造,使用几行代码就可以交付动态数据应用.
开始使用
运行你的脚本
streamlit run <脚本名称> [-- script <参数列表>]一些需要了解的东西
- 数据流
Streamlit会在以下情况下从头到尾重新运行整个脚本,实现页面的重新渲染.
- 修改程序源代码
- 与应用内控件交互,如拖动滑块,输入文字,点击按钮
魔法命令!?(了解)
魔法! 可以在不调用任何Streamlit方法的情况下编写应用代码,完全不需要使用
st.write()python""" 这里使用了魔法命令,创建了一个表格. """ # 完全没有用到streamlit哦 # import streamlit as st import pandas as pd df = pd.DataFrame({ 'first column': [1, 2, 3, 4], 'second column': [10, 20, 30, 40] }) # 这里有一个孤零零的df,实际上,这行代码等价于 st.write(df) df
Streamlit展示控件
显示标题
标题目前来说有三个等级,
import streamlit as st
# 一级标题通常只使用一次,用于创建最大,最显眼的标题,一般放置于页面顶部.
st.title("Hello,KuLve@一级标题")
# 二级标题可以使用多次,用于分隔不同的内容,如章节.
st.header("Hello,KuLve@二级标题")
# 三级标题可以使用多次,用于在更小的级别上标识内容.
st.subheader("Hello,KuLve@三级标题")显示文本
有两种简易显示文本的方式,一种支持markdown语法,一种是原样输出
st.markdown(<文本>),支持markdown语法
st.text(<文本>),不支持markdown语法,原样输出.
import streamlit as st
# 这里支持MarkDown语法哦,text()是不支持的
st.markdown("""
# 静夜思
床前**明月**光,疑是地上霜。
举头望**明月**,低头思故乡。
""")
st.text("""
# 静夜思
床前**明月**光,疑是地上霜。
举头望**明月**,低头思故乡。
""")显示代码块
用于显示代码块
语法: st.code(<代码>,language=<语言>)
import streamlit as st
# 显示一段代码
# 语法: st.code(<代码>,language=<语言>)
st.code("""
# main.py
# 示例使用,展示代码块
if __name__ == "__main__":
# 测试数据
example_list = [64, 34, 25, 12, 22, 11, 90]
print(example_list)
""", language="python")显示内容write()
这是一个通用的显示内容的方法
import streamlit as st
# 这是一个通用的显示内容的方法.
# 单参数
st.write("Hello,我是Yuili")
# 多参数,内容间以空格隔开
st.write("Hello", ",", "我是Yuili")
# 显示列表,会自动添加序号,从0开始.
st.write(["Hello", ",", "我是Yuili"])
# 显示字典
st.write({"key1": "Hello", "key2": ",", "key3": "我是Yuili"})显示表格
这个示例使用了numpy生成了一些随机数据,用于展示.
import streamlit as st
import pandas as pd
import numpy as np
random_data_source = np.random.rand(2, 3)
df = pd.DataFrame(random_data_source, columns=['FiledA', 'FieldB', 'FieldC'])
# 动态表格
st.dataframe(df)
# 静态表格
st.table(df)动态表格支持缩放,导出,滑动,查找,投影,高亮等操作.
静态表格则仅仅只是展示数据,没有任何其它功能.
显示json
json会以格式化方式输出,代码里即使只有一行,在这里也是有多行的.
import streamlit as st
st.json({
'Key1': 'Value1',
'Key2': 'Value2',
'Key3': [
'ListValue1',
'ListValue2',
'ListValue3',
'ListValue5',
'ListValue5',
],
})显示图像
st.image(<文件名>)
这个语句可以加载一张多张图像,其在加载一张和多张图像时,行为不太相同,具体见代码.
图像源可以是numpy.ndarray,BytesIO,str,Path,list
import streamlit as st
from numpy.distutils.lib2def import output_def
st.image(".\\Robin.png",
caption="我是一段说明文字", # 这个方法只能用在单张图片上
link="https://go.kulve.tech", # 这个方法只能用在单张图片上
# caption=None,
# width=None,
# use_column_width=False,
# clamp=False,
# channels='RGB'
)
image_list = [
".\\Robin.png",
".\\Sunday.png",
".\\Robin.png",
".\\Sunday.png",
".\\Robin.png",
".\\Sunday.png",
".\\Robin.png",
".\\Sunday.png"
]
st.image(image_list,
# 设置图片宽度,可设置的值有:
# - 整数(固定宽度)
# - "content"(根据内容自动调整宽度)
# - "stretch"(跟随父容器宽度)
width=100,
clamp=True, # 仅针对字节数组有用,效果未知: 将像素值裁剪到[0,255]范围内,避免报错.
channels='RGB', # 仅针对字节数组有用,效果未知: 控制颜色通道顺序.
# 指定传输给浏览器的图片格式
# 可选值: "PNG"(无损压缩), "JPEG"(有损压缩), "auto"(自动)
output_format="PNG"
)显示视频
视频源有两个,一个是本地视频源,一个是网络视频源
本地视频源暂时只能一次性加载到内存,一次性发送到客户端,不支持一点一点读取再发送,如果想要做类似的效果,可能需要将该视频资源直接作为静态资源对外暴露或者自己搭建HTTP服务器,将视频资源重定向到该地址.
import streamlit as st
video_file = open("Nikki.mp4", "rb")
video_bytes = video_file.read()
# 本地视频,本地视频需要先使用open打开,打开时,需要使用读取二进制模式.
# 本地视频不宜过大,因为需要一次性加载到内存中,这非常消耗内存.
st.video(video_bytes,format="mp4",start_time=2)
# 网络视频,直接给定地址就可以.
st.video("https://assets.papegames.com/resources/cdn/20260711/5320e0624b26823a.mp4")Streamlit交互控件
按钮
按钮会返回一个boolean值,如果为true,则在上个生命周期中,按钮被点击了.
st.button("<提示语>") -> boolean
import streamlit as st
# button返回一个布尔值,用于检查上个应用生命周期中,按钮是否被点击.
if st.button("我是一个按钮,你不准点我"):
st.write("被你点了,今天是个好日子.")复选框
checkbox_var返回一个boolean值,True表示选中,False表示未选中
st.checkbox(“提示语”, value=<默认值>)
import streamlit as st
# checkbox_var返回一个boolean值,True表示选中,False表示未选中
checkbox_var = st.checkbox("好", value=True)
if checkbox_var:
st.write("好")
else:
st.write("还行")- 本文链接: https://go.kulve.tech/posts/hm%E7%AC%94%E8%AE%B0/streamlit%E7%AC%94%E8%AE%B0/
- 版权声明: 本站所有文章除特别声明外,均采用 CC BY-NC-SA 许可协议。
