翻译自用,侵删,未经允许不得转载。
Streamlit使用起来很简单。你只需把streamlit命令写到一个py文件,然后使用streamlit run
命令运行就可以:
$ streamlit run your_script.py [-- script args]
一旦你运行上面显示的脚本,一个本地的 Streamlit 服务器就会运行,你的应用程序将在一个新的标签页打开你的默认网页浏览器。这个应用程序就是你的画布,在这里你可以绘制图表、文本、小工具、表格等等。
在app中绘制的内容取决于你. 例如 st.text
会在app上绘制文本, st.line_chart
会绘制折线图. 参考API 文档 可以看到所有的命令。
注意:
当传递一些自定义参数时,它们必须在两个破折号之后传递。否则,参数就会被解释为Streamlit本身的参数。
小贴士:
若你想通过一个URL来跑一个streamlit,可以利用Github Gists,例如:
$ streamlit run https://raw.githubusercontent.com/streamlit/demo-uber-nyc-pickups/master/app.py
每次你想更新你的应用程序,只要保存源文件。当你这样做时,Streamlit会检测到是否有变化,并询问你是否要重新运行你的应用程序。选择屏幕右上方的Always rerun
,当你每次更改源代码时,它就会自动更新你的应用程序。
这允许您在一个快速交互循环中工作:您键入一些代码,保存它,现场试用它,然后键入更多代码,保存它,试用它,直到您满意的结果。 这种方式能让你更快的学习。
小贴士:
当开发一个streamlit app时,推荐你将编辑器和浏览器放在同一屏幕,这样你可以所见即所得。
Streamlit的体系结构使您可以像编写普通的Python脚本一样编写应用程序。 要解锁此功能,Streamlit应用程序具有独特的数据流:每次必须在屏幕上更新某些内容时,Streamlit都会从头到尾重新运行整个Python脚本。
这可能在两种情况下发生:
为了使所有这些快速无缝地进行,Streamlit在后台为您做一些繁重的工作。 起到这个作用主要依赖于是@ st.cache
装饰器,它允许开发人员在应用重新运行时跳过某些昂贵的计算。 我们将在后面介绍缓存。
调用适当的API命令就可以:
import streamlit as st
x = 4
st.write(x, 'squared is', x * x)
以上我们使用了 st.write()
命令。 当你想在屏幕上绘制些什么, st.write()
是一个不错的开头! 它尝试根据参数的数据类型来猜测其参数的最佳视觉表示形式,因此,诸如将数据框绘制为漂亮的表格,将Matplotlib图形绘制为图表,等等。
你也可以使用 Streamlit 魔法命令来跳过 st.write()
命令 就像这样:
import streamlit as st
x = 4
x, 'squared is', x * x # Magic!
如果您想执行更高级的操作,例如更改特定设置,绘制动画或按顺序插入内容,请在我们的API文档和高级概念页面中查看其他可用的Streamlit命令。
当你想将数据或模型设置成可调状态的时候,使用 st.slider()
, st.button()
或 st.selectbox()
等部件是不错的选择。实现起来也很容易—把部件视为变量一样就可以。
import streamlit as st
x = st.slider('x') # this is a widget
st.write(x, 'squared is', x * x)
初次运行app,输出显示"0 squared is 0"。每次使用部件进行交互时,streamlit会将脚本重新执行,在此过程中,将小部件的当前状态分配给您的变量。
例如,若用户将滑块slider移动到10
,Sreamlit 将重跑代码并将上述x
设置为10
,此时输出为"10 squared is 100"
使用 st.sidebar
可以轻易的将部件组织在左侧侧边栏。每个传到 st.sidebar
的元素将被固定到左边侧边栏, 这样可以让用户在使用UI进行控制的时候专注于关注app内容。
例如,若你想添加一个多选框或者滑块到侧边栏,使用st.sidebar.slider
和st.siderbar.selectbox
替换 st.slider
和 st.selectbox
即可。
import streamlit as st
# Add a selectbox to the sidebar:
add_selectbox = st.sidebar.selectbox(
'How would you like to be contacted?',
('Email', 'Home phone', 'Mobile phone')
)
# Add a slider to the sidebar:
add_slider = st.sidebar.slider(
'Select a range of values',
0.0, 100.0, (25.0, 75.0)
)
注意:
边栏当前不支持以下Streamlit命令:st.write
(应使用st.sidebar.markdown()
代替),st.echo
和st.spinner
。
即使从Web加载数据,处理大型数据集或执行昂贵的计算,Streamlit缓存也可以使您的应用程序快速执行。
使用装饰器 @st.cache
装饰需要被缓存的函数即可:
@st.cache # This function will be cached
def my_slow_function(arg1, arg2):
# Do something really slow in here!
return the_output
当使用@st.cache
装饰器标记一个函数时,这将告诉steamlit在此函数被调用的时候应当检查以下事情:
若streamlit是初次看到这四个部分的确切值,组合方法和顺序,那么streamlit将执行这个函数并将结果保存在本地缓存中。下次当缓存函数被调用的时候,若这些部分没有变化,streamlit将直接返回之前缓存中的结果作为输出。
关于Streamlit缓存的配置参数,限制等更多信息,详见see Caching.
现在您已经对所有的单个部分有了更多的了解,让我们结束这个循环并回顾一下它是如何协同工作的:
Next
Previous