python - Streamlit 按钮更改禁用状态

标签 python session-state streamlit

如何在 Streamlit 中获得正确启用/禁用的按钮?下面的当前代码适用于 1 单击延迟(不需要)。

所需的操作 - 单击“button_a”时启用“button_c”,单击“button_b”时禁用“button_c”。

当前操作--在单击button_a然后单击任何其他按钮后启用button_c,或者在单击button_b然后单击任何其他按钮后禁用。

import streamlit as st

if 'but_a' not in st.session_state:
    st.session_state.disabled = True

    
button_a = st.button('a', key='but_a')

button_b = st.button('b', key='but_b')

button_c = st.button('c', key='but_c', disabled=st.session_state.disabled)

st.write(button_a, button_b, button_c)

if button_a:
    st.write("clicked A")
    st.session_state.disabled = False

if button_b:
    st.write('clicked B')
    st.session_state.disabled = True
    

最佳答案

我认为所有问题都是当您按下任何按钮时它会再次运行所有代码,并再次创建所有按钮,并且您必须在创建 button_c 之前更改状态。

if button_a:
    st.session_state.disabled = False

if button_b:
    st.session_state.disabled = True

button_c = st.button('c', key='but_c', disabled=st.session_state.disabled)

完整的工作代码:

import streamlit as st

if 'but_a' not in st.session_state:
    st.session_state.disabled = True

print('before:', st.session_state)

button_a = st.button('a', key='but_a')

button_b = st.button('b', key='but_b')

# change state before creating button `c` (but after creating button `a` and `b`)

if button_a:
    st.session_state.disabled = False

if button_b:
    st.session_state.disabled = True

button_c = st.button('c', key='but_c', disabled=st.session_state.disabled)

st.write(button_a, button_b, button_c)

# display text after displaying all buttons

if button_a:
    st.write("clicked A - Activate C")

if button_b:
    st.write("clicked B - Deactivate C")

print('after:', st.session_state)

关于python - Streamlit 按钮更改禁用状态,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/73882954/

相关文章:

asp.net-mvc-3 - 为什么 Session 在 ASP.NET MVC 应用程序中是一场灾难?

python - 我们可以下载 python 的 urllib2 库吗?

python - 为什么使用 pyodbc 访问大于 511 的字符字段时 count() 返回 0?

javascript - 使用 JavaScript 启用/禁用按钮

Asp.net azure 共存缓存 session 状态设置?

Altair 颜色条形图(按值)未显示

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

python - Altair Hconcat - 是否可以在同一 HConCat 中为图表配置不同的轴?

python - 如何使用 ConfigObj 附加到现有配置文件?

python - 如何将热图注释为子图?