嵌入st.button的st.data_editor修改值后消失,如何解决?
解决方案
你的代码点击按钮后会新增一个data_editor,导致页面出现两个表格编辑器。要实现点击按钮替换原有编辑器的效果,用Streamlit的会话状态控制就行:
import streamlit as st import pandas as pd df = pd.DataFrame({"col": ["foo", "baz", "qux"]}) # 初始化会话状态,记录当前显示的编辑器标识 if "current_editor_key" not in st.session_state: st.session_state.current_editor_key = "OK" # 点击按钮切换编辑器标识 if st.button("Show another df"): st.session_state.current_editor_key = "KO" if st.session_state.current_editor_key == "OK" else "OK" # 根据当前标识渲染对应的data_editor st.data_editor(df, key=st.session_state.current_editor_key)
这么改之后,点击按钮只会切换显示不同的编辑器,不会新增。两个编辑器的编辑状态是独立保存的,切换回去还能看到之前编辑的内容。
内容的提问来源于stack exchange,提问作者user21474411
相关产品推荐
相关产品推荐

