我的应用程序的目的是在填写表格后构建一个(可下载的)tsv 文件。每个表格页面都与新学生的信息相关。所以我总是有相同的页面结构(每个学生都有相同的表格)。我想要的是添加一个按钮,为每个新学生生成一个新页面。最后,“结束”按钮应显示表格(例如使用st.dataframe()
)所有学生。
以下脚本生成一个页面(玩具示例):
import streamlit as st
class NewStudent():
def __init__(self, page_id):
st.title(f"Student N°{page_id}")
self.name = st.text_input("Name")
self.age = st.text_input("Age")
new_student = NewStudent(page_id=1)
我已经测试了许多解决方案,但所有解决方案都在同一页面中添加了 NewStudent。
先感谢您。
创建一个循环来处理学生信息。所有信息将保存在一个列表中,稍后将转换为数据帧。
Code
import streamlit as st
import pandas as pd
if 'num' not in st.session_state:
st.session_state.num = 1
if 'data' not in st.session_state:
st.session_state.data = []
class NewStudent:
def __init__(self, page_id):
st.title(f"Student N°{page_id}")
self.name = st.text_input("Name")
self.age = st.text_input("Age")
def main():
placeholder = st.empty()
placeholder2 = st.empty()
while True:
num = st.session_state.num
if placeholder2.button('end', key=num):
placeholder2.empty()
df = pd.DataFrame(st.session_state.data)
st.dataframe(df)
break
else:
with placeholder.form(key=str(num)):
new_student = NewStudent(page_id=num)
if st.form_submit_button('register'):
st.session_state.data.append({
'id': num, 'name': new_student.name, 'age': new_student.age})
st.session_state.num += 1
placeholder.empty()
placeholder2.empty()
else:
st.stop()
main()
Output
Fillup then press register to record info to a list of dictionary.
Fillup again.
Then press end.
然后将显示保存的数据。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)