这是我目前正在处理的Streamlight代码。 当我点击“About Python”按钮时,它工作正常,并显示“Generate Syntax”按钮。但是当我点击“Generate Syntax”按钮时,它没有显示任何内容,我的程序再次从第一个开始运行。请帮忙
left, center, right = st.beta_columns(3)
left_one = left.button("About Python",key = "1")
center_one = center.button("Learn Python", key = "2")
right_one = right.button("Practice Python", key = "3")
if left_one:
generate_syntax = st.button("Generate Syntax", key = "4")
if generate_syntax:
st.write("Hello All..")
提前感谢
单击
About Python
时:left_one
的值变为True
generate_syntax
)的值变为False
单击
Generate Syntax
时:generate_syntax
的值变为True
left_one
的值变为False
问题是你永远不会同时满足
generate_syntax
为True
和left one
为True
的条件。所以你永远不会打印"Hello All"
Streamlit在按钮上一次只考虑一个状态变化解决这个问题的方法是使用对象来存储状态@pathe_rao已经建议使用来自this gist的
SessionState
对象:这在Streamlit discussions中非常常见,因为它乍一看像一个bug,但实际上不是。一个简单而愚蠢的答案是“Streamlight就是这样设计的”。
因此,每次按下按钮时,streamlit将重新运行整个网页,并且它不记得以前的状态(上一个按钮中的信息)
虽然我从未找到任何关于如何准确解决这个问题的官方答案,但我确实设法做了一些变通
if
条件下调用它们李>相关问题 更多 >
编程相关推荐