未提供项目描述
项目描述
Streamlit 火灾状态
在多页面流式应用程序中,最令人头疼的问题之一是,如果您在页面之间切换,您的状态不会被保留。
这就是为什么火状态在这里为您服务。
安装
pip install fire-state
快速开始
在表单中保持状态
import streamlit as st
from fire_state import create_store, form_update
# Register state with initiate values in a slot
slot = "home_page"
key1, key2 = create_store(slot, [
("state1", 5),
("state2", 12),
])
# Now create a form using the generated keys
with st.form("my form"):
st.slider("State 1", 1, 10, step=1, key=key1)
st.slider("State 1", 10, 20, step=1, key=key2)
st.form_submit_button(label="Submit", on_click=form_update, args=(slot,))
在页面之间切换时,会保留状态。
在任何地方保持状态
您需要使用该set_state功能自己控制状态。
import streamlit as st
from fire_state import create_store, get_state, set_state
slot = "home_page"
create_store(slot, [
("state1", 0),
])
def increment():
prev = get_state(slot, "state1")
set_state(slot, ("state1", prev + 1))
st.button("+1", on_click=increment)
st.text(f"Value: {get_state(slot, 'state1')}")
高级用法
表单提交后保持状态
在这个例子中,我们有一个表单来控制如何绘制折线图。
让我们先做一些设置
import numpy as np
import pandas as pd
import streamlit as st
np.random.seed(0)
@st.cache
def chart_data(line_count, data_size):
return pd.DataFrame(
np.random.randn(data_size, line_count),
columns=np.random.choice(list('abcdefghijlkmn'), line_count))
现在我们可以使用火状态来记录用户动作。
这个想法是,用户第一次打开页面时,他们从来没有点击过运行按钮,所以他们点击一个按钮的次数是 0。当它不再是 0 时,这意味着用户点击了它。因此,绘图被渲染或更新(如果图表数据被更改)。
from fire_state import create_store, get_state, set_state, form_update
PAGE_SLOT = "Home_Page"
key1, key2, key3 = create_store(PAGE_SLOT, [
("line_count", 2),
("data_size", 13),
("run", 0)
])
with st.form(key="a form"):
line_count = st.slider("Line Count", 1, 10, step=1, key=key1)
data_size = st.slider("Data Size", 10, 20, step=1, key=key2)
run = st.form_submit_button(label="Run", on_click=form_update, args=(PAGE_SLOT,))
prev_run_state = get_state(PAGE_SLOT, 'run')
if (prev_run_state != 0) or run:
data = chart_data(line_count, data_size)
st.line_chart(data)
# increase by 1 every time user click it
set_state(PAGE_SLOT, ("run", prev_run_state + 1))
重置状态
使用set_store函数批量更新状态:
import streamlit as st
from fire_state import create_store, \
get_store, set_store, \
get_state, set_state
slot = "page"
init_state = [
("state1", 1),
("state2", 2),
("state3", 3),
]
create_store(slot, init_state)
def reset():
set_store(slot, init_state)
st.button("Reset", on_click=reset)
和函数允许您批量修改set_store和get_store获取您的状态。
状态的生命周期
如果您不关闭或刷新页面,该状态将持续存在。仅当您停止应用程序时,状态实例才会被销毁。
项目详情
下载文件
下载适用于您平台的文件。如果您不确定要选择哪个,请了解有关安装包的更多信息。
源分布
fire-state-0.1.1.tar.gz
(5.1 kB
查看哈希)
内置分布
fire_state-0.1.1-py3-none-any.whl
(4.9 kB
查看哈希)
关
fire_state -0.1.1-py3-none-any.whl 的哈希值
| 算法 | 哈希摘要 | |
|---|---|---|
| SHA256 | abfcd3ee671de41d16b8e25d32710f2a04579180d892ee884d6da7f6f5aa898e |
|
| MD5 | 26e7a56fa2b8217737364e5ffb3bebc1 |
|
| 布莱克2-256 | b7f7bedd217c9d6e7e57ff22c83ef347a825b16b73b12b2833edc056ed521ceb |