我正在尝试使用Streamlit来构建一个可访问的用户界面,以创建更复杂的JSON对象。这些对象设置了需要用户输入的模式,因此我希望允许用户单击按钮并生成这些输入集。这是我想要做的事情的图表
到目前为止,我尝试的是运行一个函数,该函数在单击按钮时生成输入。下面是代码:
def layer_func():
dictionary["key"] = {
st.text_input("layer Name", "Name"): {
"source": st.text_input("Source", "source"),
"min": st.slider("Minimum", 0,22, 0),
"max": st.slider("Maximum", 0,22, 22)
}
}
if st.button('New Layer'):
layer_func()
我遇到的问题是,当我更改layer_func()
中定义的值时,它会重新加载页面,并导致按钮值恢复为False
,这会重置接口以不显示输入。
任何想法都很感激。
发布于 2022-08-18 17:35:13
为了防止当用户更改一个小部件值时页面重新加载,您可以重构代码,使其具有“源”、"min“和"max”,作为带有提交按钮的表格的一部分,例如:
with st.form("layer_func"):
layer_name = st.text_input("layer Name", "Name")
source = st.text_input("Source", "source")
min = st.slider("Minimum", 0,22, 0)
max = st.slider("Maximum", 0,22, 22)
submitted = st.form_submit_button("Submit")
if submitted:
dictionary["key"] = {
layer_name: {
"source": source,
"min": min,
"max": max
}
}
if st.button('New Layer'):
layer_func()
https://stackoverflow.com/questions/73310750
复制相似问题