少啰嗦,先看效果
目前streamlit并没有自带popup的功能的,网上找了大佬写的另一个模块来实现。使用的是streamlit-modal模块,要先用pip安装,逻辑代码如下:
from streamlit_modal import Modal
# 定义modal
my_modal = Modal(title="", key="modal_key", max_width=200)
# 使用session_state来判断modal里的确定按钮是否被点击
if "confirm" not in st.session_state:
st.session_state["confirm"] = False
# 回调函数,将session_state置为True
def del_btn_click():
st.session_state["confirm"] = True
# 如果删除按钮被点击,就进行弹窗
if st.button("删除", key=str(t[0]) + "btn"):
with my_modal.container():
st.markdown("""
确认删除该用例?
{}
""".format(t[1])) # 这里的t[1]为用例名称
# 定义一个确定按钮,注意key值为指定的session_state,on_click调用回调函数改session_state的值
st.button("确定", key="confirm", on_click=del_btn_click)
# 这里通过session_state判断弹窗里的确定按钮被点击了,就进行你想要的逻辑操作。
if st.session_state["confirm"]:
delete_cases(t[0]) # 删除用例
st.session_state["confirm"] = False # 恢复session_state为False
st.experimental_rerun() # 重刷页面
如果这篇文章有帮助到你,不防一键三连呗~哈哈哈