gpt4 book ai didi

python - 流光小部件依赖

转载 作者:行者123 更新时间:2023-12-04 01:12:15 25 4
gpt4 key购买 nike

我正在尝试两个小部件的简单概念,其中一个依赖于另一个
我想让用户点击一个按钮,打开一个数字 slider 。然后用户可以选择
通过数字 slider 的数字。
这是我正在使用的代码

import streamlit as st
press_button = st.button("Press it Now!")
if press_button :
# ask for the value
th = st.number_input("Please enter the values from 0 - 10",)
我面临的问题是,当我更改数字 slider 的值时,streamlit 会重新运行整个事情,并且必须再次按下“按钮”才能返回数字 slider 。最终,数字 slider 永远不会改变

最佳答案

Streamlit 会在每次发生操作时重新运行脚本:按下按钮、输入数字等。要保存值,请使用缓存函数在运行之间维护值。
我很确定这就是你想要的:

import streamlit as st

# Keep the state of the button press between actions
@st.cache(allow_output_mutation=True)
def button_states():
return {"pressed": None}

press_button = st.button("Press it Now!")
is_pressed = button_states() # gets our cached dictionary

if press_button:
# any changes need to be performed in place
is_pressed.update({"pressed": True})

if is_pressed["pressed"]: # saved between sessions
th = st.number_input("Please enter the values from 0 - 10")
注意:您说您想要一个 slider ,但后来您使用了数字输入。如果您真的想要一个数字 slider ,请使用 st.slider("Select a Number", min_value=1, max_value=10, step=1)需要考虑的一些额外事项:
  • 如果您希望数字输入保证直接出现在按钮下方,您需要在脚本顶部附近创建一个占位符:
  •   btn = st.empty()
    nmb = st.empty()
    这保证了 nmb将出现在 btn 的正下方.当你定义你的小部件时,而不是调用 st.button(...)您调用 btn.button(...) .
  • 如果你想创建一个切换按钮(当你再次点击它时,数字输入消失),你可以通过使用
  • 来实现。
      if press_button:
    is_pressed.update({"pressed": not is_pressed["pressed"]})
  • 如果您希望按钮在按下后消失,请使用
  •   if is_pressed["pressed"]:f
    btn.empty()
    th = nmb.number_input(...)

    关于python - 流光小部件依赖,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/64490506/

    25 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com