按下Streamlight中的按钮时无法增加值



我的问题是,当我初始化一个名为self.items=0的新变量时,每次完全导入值时,我都希望增加1。但我尝试使用该变量进行调试,但它总是由0设置为初始化

这是我的示例代码:

import streamlit as st
class main:
def __init__(self):
self.items = 0
self.run()
def run(self):
st.title('Home')
print(self.items)
if st.button('Submit'):
self.items = self.items + 1
print(self.items)
if __name__ == "__main__":
main()

你说得对,因为每次按下按钮时脚本都会重新运行,变量会重新初始化为0,计数器也不会工作。

但有一个解决方案:st.session_state,它是在streamlit=0.84.0中引入的
来自文档:

会话状态是在每次用户会话的重新运行之间共享变量的一种方式。

按以下方式更新代码将起作用:

import streamlit as st

class main:
def __init__(self):
# Initialize a session state variable
if "items" not in st.session_state:
st.session_state["items"] = 0
self.items = st.session_state["items"]
self.run()
def run(self):
st.title("Home")
if st.button("Submit"):
st.session_state["items"] = st.session_state["items"] + 1
print(self.items)

if __name__ == "__main__":
main()

关于如何在这篇博客文章中发挥作用的更多信息。

最新更新