仅使用 Python 创建的 Web 应用程序(前端版本)第03章Streamlit

发布时间:2024年01月24日

简要介绍一下Streamlit,并介绍一下我在使用Streamlit时注意的地方。

什么是 Streamlit?

在几分钟内将数据脚本转变为可共享的 Web 应用程序
全部用Python编写,无需前端知识

数据脚本可能类似于 str 或 pandas.DataFrame。 对于数据分析,您可以简单地传递熟悉的DataFrame,它会显示一个表格。 无需编写 HTML/JS/CSS,只需组合预先构建的组件即可创建页面。

基本的功能

您可以按照以下步骤轻松尝试。

安装streamlit

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”。

文章来源:https://blog.csdn.net/xianyinsuifeng/article/details/135815020
本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。