4

我想创建一个简单的流光应用程序,当您按下按钮时,它会增加 x 并显示 x 的新值。

但是,它仅适用于第一次“x 仅显示值 2 并且不增加”

import streamlit as st

x = 1
if st.button("Increment x"):
    x=x+1
    st.text(x)
4

2 回答 2

9

每次您进行更改/交互时,Streamlit 都会重新运行网页脚本。因此,每次单击按钮时,它都会重置 x=1,然后将 x 加 1。

您的按钮工作正常,问题在于 streamlit 处理事件的方式。您可以尝试使用 st.cache 来解决此问题,但我从未尝试过复制您的目标。

于 2019-12-13T00:46:38.020 回答
9

https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92

嘿,这个包裹对我来说很神奇。

将代码下载到您正在处理的同一文件夹中并繁荣:

import SessionState

ss = SessionState.get(x=1)
    
if st.button("Increment x"):
    ss.x = ss.x + 1
    st.text(ss.x)
于 2020-08-19T22:35:34.943 回答