python - 如何在 streamlit 中添加提交按钮(按钮内的按钮似乎重置了整个应用程序。为什么?)

标签 python streamlit

当我点击回答按钮时,它刷新了整个应用。请查看此链接以了解我所期待的 https://youtu.be/WO2mK1VnlZU .只需从此链接(改编自 https://gist.github.com/tvst/036da038ab3e999a64497f42de966a92 93)下载 SessionState.py 文件以导入 SessionState 提前致谢

import streamlit as st
import SessionState
import random
import operator



def random_problem():
    st.markdown("<h1 style = 'text-align:center; color:green;'>Simple Math</h1>", unsafe_allow_html=True)
    
    session_state = SessionState.get(name = "", button_start = False)
    
    session_state.name = st.text_input("Enter Your Name")
    
    button_start = st.button('Start Game')
    if button_start:
        session_state.button_start = True
    if session_state.button_start:
        st.write("Welcome ", session_state.name)
        session_state.operators = {
            '+': operator.add,
            '-': operator.sub,
            '*': operator.mul,
            '/': operator.truediv,
            }
        session_state.num1 = random.randint(1,10)
        
        session_state.num2 = random.randint(1,10)
        
        session_state.operation = random.choice(list(session_state.operators.keys()))
        session_state.answer = session_state.operators.get(session_state.operation)(session_state.num1,session_state.num2)
        st.write('What is:', session_state.num1, session_state.operation, session_state.num2,'?')
        session_state.ans = st.text_input('Answer: ')
        session_state.button_submit = st.button('Answer')
        if session_state.button_submit:
            if session_state.answer == session_state.ans:
                st.write('Correct')
            else:
                st.write('Incorrect')
    
random_problem()

```[![when i click answer button it keep on refreshing whole app][1]][1]


  [1]: /image/IowEQ.png

最佳答案

这就是 streamlit 的工作原理 - 每次您更改选择(例如单击按钮)时,它都会再次运行整个脚本。

但是 - 您可以使用缓存来缓存您必须一次又一次计算的内容。 请在此处阅读有关 streamlit 中的缓存的信息 - https://docs.streamlit.io/en/stable/caching.html

关于python - 如何在 streamlit 中添加提交按钮(按钮内的按钮似乎重置了整个应用程序。为什么?),我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/62750900/

相关文章:

python - 导入错误 : cannot import name suppress

python - Pandas 根据所有现有列的值(第一列除外)创建新列

python - 州缩写的正则表达式(python)

python - 如何在 Streamlit 上使用 Altair 绘制多个 Y 轴?

javascript - 如何从 Javascript 向 Streamlit 发送数据?

python - 如何在 Bokeh (Python) 中处理图像

python - Shell 脚本 “dvc pull” 无法在 Streamlit 服务器上运行

hosting - Streamlit 托管

docker - 错误:由于环境错误而无法安装软件包:[Errno 28]设备上没有剩余空间-尝试在docker中运行streamlit时

python - numpy.fft.fft() 在 Python 中的实现