简要介绍一下Streamlit,并介绍一下我在使用Streamlit时注意的地方。
在几分钟内将数据脚本转变为可共享的 Web 应用程序
全部用Python编写,无需前端知识
数据脚本可能类似于 str 或 pandas.DataFrame。 对于数据分析,您可以简单地传递熟悉的DataFrame,它会显示一个表格。 无需编写 HTML/JS/CSS,只需组合预先构建的组件即可创建页面。
您可以按照以下步骤轻松尝试。
pip install streamlit
使用pip安装XXX出错(pip install XX),错误信息:python WARNING: Retrying (Retry(total=4, connect=None,
解决方法:出现该错误信息是因为pip源连接证书验证失败,将pip源调整为国内的源就可以了
国内的pip源:
阿里云 http://mirrors.aliyun.com/pypi/simple/
安装的时候加上 【-i http://mirrors.aliyun.com/pypi/simple --trusted-host mirrors.aliyun.com】就可以了
# main.py
import streamlit as st
def main():
st.write("Hello World!")
if __name__ == "__main__":
main()
streamlit run main.py
默认情况下,它从 http://localhost:8501 开始,因此您可以使用浏览器轻松访问您创建的网页。 还提供各种其他组件。 官方文档和Momijiame的文章中有介绍,请酌情参考。
要管理 Streamlit 中的会话,请使用 st.session_state。 st.session_state 可以被视为 Python 字典对象,并且可以维护根据用户操作而变化的状态。
注意:仅当选项卡打开并连接到 Streamlit 服务器时,会话状态才会持续存在。 请注意,当您关闭该选项卡时,会话中保存的所有内容都将丢失。
运行效果:
代码如下:
import streamlit as st
st.title("Counter Example")
if "count" not in st.session_state:
st.session_state.count = 0
increment = st.button("Increment")
if increment:
st.session_state.count += 1
st.write("Count = ", st.session_state.count)
代码的解释:
import streamlit as st: 导入 Streamlit 库并将其简写为 st,以便在代码中使用。
st.title(“Counter Example”): 创建一个标题为 “Counter Example” 的页面标题。
if “count” not in st.session_state: st.session_state.count = 0: 这是一个检查会话状态的条件语句。如果会话状态中没有名为 “count” 的变量,就将其初始化为 0。这样确保了在应用程序的初始运行中,计数器变量已被设置。
increment = st.button(“Increment”): 创建一个名为 “Increment” 的按钮,当用户点击时将其状态保存在 increment 变量中。
if increment: st.session_state.count += 1: 如果按钮被点击(increment 变量为 True),则增加计数器变量 st.session_state.count 的值。
st.write("Count = ", st.session_state.count): 将当前计数器的值显示在页面上。
对于某些小部件,例如 st.button,可以使用 on_click(描述单击小部件时的过程)和 on_change(描述值更改时的过程)作为参数来传递回调函数。 如果您使用回调函数编写计数器,它将如下所示:
import streamlit as st
st.title("Counter Example using Callbacks")
if "count" not in st.session_state:
st.session_state.count = 0
def increment_counter():
st.session_state.count += 1
st.button("Increment", on_click=increment_counter) # # 按下时返回值为True
st.write("Count = ", st.session_state.count)
当您想要更改接受 st.text_input 等输入的“组件”时,您需要使用回调。 考虑以下示例,其中按下按钮会更改输入组件的值。
import streamlit as st
st.text_input("Message", key="text_input")
def change_value():
st.session_state["text_input"] = "Hello, World"
st.button("Click", on_click=change_value)
st.text_input(“Message”, key=“text_input”): 创建一个文本输入框,用于用户输入消息。key 参数被设置为 “text_input”,以便稍后通过这个键来获取或更改文本输入框的值。
def change_value(): st.session_state[“text_input”] = “Hello, World”: 定义了一个名为 change_value 的函数。该函数的作用是将 Streamlit 会话状态中名为 “text_input” 的变量的值设置为 “Hello, World”。
st.button(“Click”, on_click=change_value): 创建一个按钮,文本为 “Click”,并使用回调函数 change_value 处理按钮的点击事件。当用户点击按钮时,change_value 函数会执行,从而将会话状态中 “text_input” 的值更改为 “Hello, World”。