You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何重置Streamlit中st.number_input的值并同步显示?

Streamlit数值输入框重置问题解决方法

你遇到的问题核心是:直接修改变量值不会同步到Streamlit的输入组件显示,因为组件的状态是由Streamlit的Session State管理的,不是普通变量。要实现重置后页面同步显示0.0,得用Session State来绑定每个输入框的状态。

解决步骤

  • 给每个st.number_input添加key参数,让组件和Session State的对应键绑定
  • 初始化Session State(首次运行时设置所有输入框默认值为0.0)
  • 重置按钮直接修改Session State里对应键的值
  • 将st.number_input的value参数关联到Session State的键,让组件根据Session State的值更新显示

修改后的完整代码

st.subheader('Pigments')

# 初始化Session State,首次运行时设置所有输入框默认值为0.0
pigment_keys = [
    'bayfer_yellow_420', 'bayfer_red_110', 
    'hgn_green', 'pk_3095', 'rkb06', 'u54'
]
for key in pigment_keys:
    if key not in st.session_state:
        st.session_state[key] = 0.0

# 绑定Session State的数值输入框
pigm_bayfer_yellow_420 = st.number_input(
    'Bayferrox gelb 420:', min_value=0.0, max_value=1.0,
    step=0.00001, format='%.7f', value=st.session_state['bayfer_yellow_420'],
    key='bayfer_yellow_420'
)
pigm_bayfer_red_110 = st.number_input(
    'Bayferrox rot 110:', min_value=0.0, max_value=1.0,
    step=0.00001, format='%.7f', value=st.session_state['bayfer_red_110'],
    key='bayfer_red_110'
)
pigm_hgn_green = st.number_input(
    'HGN grün:', min_value=0.0, max_value=1.0,
    step=0.00001, format='%.7f', value=st.session_state['hgn_green'],
    key='hgn_green'
)
pigm_pk_3095 = st.number_input(
    'PK 3095:', min_value=0.0, max_value=1.0,
    step=0.00001, format='%.7f', value=st.session_state['pk_3095'],
    key='pk_3095'
)
pigm_rkb06 = st.number_input(
    'RKB06:', min_value=0.0, max_value=1.0,
    step=0.00001, format='%.7f', value=st.session_state['rkb06'],
    key='rkb06'
)
pigm_u54 = st.number_input(
    'U54:', min_value=0.0, max_value=1.0,
    step=0.00001, format='%.7f', value=st.session_state['u54'],
    key='u54'
)

if col1.button('Calculate'):
    # 计算逻辑可以直接使用上面的变量,或者从session_state取值
    pass
if col2.button('Reset'):
    # 重置所有Session State的值为0.0,输入框会自动同步显示
    for key in pigment_keys:
        st.session_state[key] = 0.0

说明

  • 每个输入框的key必须唯一,这里用了简洁的键名,和输入框一一对应
  • 初始化Session State的循环避免了重复写默认值的代码,更简洁
  • 点击重置按钮时,直接修改Session State的对应值,Streamlit会自动重新渲染组件,显示更新后的0.0值

内容的提问来源于stack exchange,提问作者Torsten Buchert

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.26 17:42:31