4. 滑块与实时更新

任务说明

构建一个Streamlit应用,页面包含一个滑块组件,用户拖动滑块时,页面实时显示当前数值及其平方和立方结果。核心目标是演示st.slider的基本用法以及Streamlit的响应式更新机制——当滑块值变化时,依赖该值的表达式会自动重新执行并刷新界面。

实现代码

import streamlit as st

st.title("滑块与实时更新")

# 创建滑块,范围0~100,默认值50,步长1
value = st.slider(
    "选择一个数值",
    min_value=0,
    max_value=100,
    value=50,
    step=1
)

# 实时计算并展示
st.write(f"当前数值:**{value}**")
st.write(f"平方:**{value ** 2}**")
st.write(f"立方:**{value ** 3}**")

# 使用指标组件更直观地展示
col1, col2, col3 = st.columns(3)
col1.metric("数值", value)
col2.metric("平方", value ** 2)
col3.metric("立方", value ** 3)

运行方式

  1. 安装依赖:pip install streamlit
  2. 将上述代码保存为 app.py
  3. 在终端运行:streamlit run app.py
  4. 浏览器自动打开本地地址(默认 http://localhost:8501)

验证方法

页面加载后,拖动滑块到任意位置(例如设为7),观察页面显示:

  • “当前数值”显示为7
  • “平方”显示为49
  • “立方”显示为343
  • 三个指标卡片同步更新为7、49、343

判定标准:滑块每次移动后,所有数值无需点击任何按钮即自动刷新,且平方、立方结果与当前滑块值严格一致(平方=数值×数值,立方=数值×数值×数值),即视为功能通过。

界面布局与更新机制

Streamlit 滑块实时更新机制 ① 滑块组件 (st.slider) 用户拖动 → 触发值变化 value = 50 自动重新执行 ② 表达式实时计算 平方 = value²  |  立方 = value³ ③ 界面刷新 (st.write / st.metric)

上图展示了本案例的核心数据流:滑块状态是唯一输入源,Streamlit检测到滑块值变化后自动重跑脚本,所有依赖该值的表达式(平方、立方)随之更新,最终通过st.write和st.metric将结果渲染到页面。整个过程无需手动提交或回调函数,体现了Streamlit“以Python脚本顺序执行为核心”的响应式编程模型。