Streamlit是一个开源Python库,其旨在为机器学习和数据科学领域简单快速地创建和分享美观的、定制化的web应用。使用Streamlit,用户仅仅几分钟即可创建和部署强大的数据应用。
Streamlit的目标是创建一个开源框架,以将Python脚本转换为交互式应用程序为目标。Streamlit的口号是"构建和共享数据应用程序的最快方式"。Streamlit的一个主要优点是其快速简便的开发流程。运行 Streamlit 服务器后,可以直接对源代码进行更改,并且每当保存文件时,应用程序都会更新以反映浏览器中的这些更改。
1.安装
pip install streamlit
2.使用方法
2.1 启动项目
如果是运行自己的项目,则运行:
streamlit run myapp.py
myapp.py是自己编写的streamlit项目。
如果代码无误,命令行床则会直接出现下列页面,然后弹出网页。如果未弹出,可通过访问上述地址进入。
也可以尝试官方提供的demo。
streamlit hello
在开发阶段,最好是开启"开发模式",这样只要保存代码后,Streamlit就能重新运行app。这会极大地提高开发效率。开启方式是在右上角选择"Always rerun"。
2.2 streamlit常用语法
2.2.1 基本的文字显示(markdown)
import streamlit as st
st.title("Streamlit的Title!")
st.header("Streamlit的header")
st.subheader("Streamlit的subheader")
st.text("Streamlit的text....")
st.markdown("### Streamlit的markdown\nctyunos\n #### 基础架构\n 操作系统 ![12]
效果图:
2.2.2 消息状态显示
import streamlit as st
st.success("Success")
st.info("Information")
st.warning("Warning")
st.error("Error")
效果如下:
2.2.3 write和txt的区别
import streamlit as st
st.write(range(1,100))
st.write(range(1,100))
2.2.4 显示图片
配合pillow库,streamlit可以直接显示图形。
import streamlit as st
from PIL import Image
img = Image.open("12.png")
st.text("图片展示:")
st.image(img, width=500)
效果图:
2.2.5 check box用法
check box为可勾选框,如果被选择,则返回True。
import streamlit as st
if st.checkbox("Show/Hide"):
st.text("Showing the widget")
效果为:
勾选前:
勾选后:
2.2.6 Radio Button
radio button为复选按钮,可以根据选择的项目,来返回不同值。
import streamlit as st
status = st.radio("今天天气", ("晴","雨","阴天"))
st.success(status)
效果为:
2.2.7 Selection Box
Selection Box为可选框,作用和Radio Button类似,会返回被选择的项目值。
import streamlit as st
status = st.selectbox("今天天气", ("晴","雨","阴天"))
st.success(status)
效果为:
2.2.8 Multi-SelectBox
Multi-SelectBox为可以选择多个选项的框,会返回所以选项值。
import streamlit as st
hobby = st.multiselect("兴趣:", ["Dancing", "Reading", "Sports"])
st.write("你有{}种兴趣,分別是{} ".format(len(hobby), hobby))
效果为:
2.2.9 Button
button为普通按钮,被点击时值会变为 True。
import streamlit as st
btn = st.button("按钮")
if btn:
st.text("按下按钮!")
效果为:
2.2.10 Text Input
文本输入框,是指从前端获取文本。
import streamlit as st
name = st.text_input("输入名字", "Type Here …")
if(st.button("完成")):
result = name.title()
st.success(result)
效果为:
2.2.11 Slider
slider滑动条用于从窗体获取特定的数值。
import streamlit as st
level = st.slider("选择难度",1,10)
st.text('Selected: {}'.format(level))
效果为:
2.2.12 File uploader
File uploader上传文件工具,用于将特定文件上传到程序,并处理之。
import streamlit as st
from PIL import Image
uploaded_image = st.file_uploader("Please choose an image file", type=["png","jpg","jpeg"])
if uploaded_image is not None:
image = Image.open(uploaded_image)
st.image(image, width=None)
效果为:
2.2.13 SideBar
SideBar侧边栏,如果在组件前加入SideBar 可以建立,一个两页式页面。
import streamlit as st
from PIL import Image
level = st.sidebar.slider("选择难度", 1, 10)
record = st.sidebar.checkbox("背景同阴影。")
btn = st.sidebar.button("请点击")
uploaded_image = st.file_uploader("Please choose an image file", type=["png","jpg","jpeg"])
if uploaded_image is not None:
image = Image.open(uploaded_image)
st.image(image, width=None)
效果为:
2.2.14 其他用法
显示表格:
st.write(1234)
st.write(pd.DataFrame({
'first column': [1, 2, 3, 4],
'second column': [10, 20, 30, 40],
}))
显示仪表盘:
st.metric(label="Temperature", value="70 °F", delta="1.2 °F")
显示代码块:
st.code()
显示数学公式latex格式:
st.latex()
选择颜色:
st.color_picker()
2.3 streamlit运行原理
总结一下整体的运行机理:
(1)Streamlit的apps是从上到下执行的Python脚本;
(2)每次当一个用户打开浏览器,访问你的app后,上述脚本就会重新执行;
(3)当脚本执行时,Streamlit在浏览器渲染它的输出;
(4)脚本使用Streamlit缓存来避免重复执行昂贵的运算,所以结果更新会非常快;
(5)每次当用户与部件进行交互时,脚本就会重新运行,部件的返回值也会更新为最新状态。
https://docs.streamlit.io/library/api-reference/data/
2.4 应用效果图
聊天界面。