【问题标题】:Can not increase value when push the button in Streamlit在 Streamlit 中按下按钮时无法增加值
【发布时间】:2021-10-13 15:05:55
【问题描述】:

我的问题是,当我初始化一个名为 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()

【问题讨论】:

    标签: python streamlit


    【解决方案1】:

    你是对的,因为每次按下按钮时脚本都会重新运行,变量重新初始化为 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()
    

    更多关于这如何在这个blog post上有用。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2023-03-05
      • 2011-12-17
      • 1970-01-01
      • 2022-08-19
      • 2020-04-12
      • 2013-03-12
      • 2022-08-16
      • 2012-03-01
      相关资源
      最近更新 更多