Streamlit:如何使用按钮重新加载页面并在每次单击后存储以前的信息

2024-03-23

我的应用程序的目的是在填写表格后构建一个(可下载的)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. enter image description here

Fillup again. enter image description here

Then press end. enter image description here

然后将显示保存的数据。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Streamlit:如何使用按钮重新加载页面并在每次单击后存储以前的信息 的相关文章

随机推荐

  • 如何通过 ID 检查 Scratch 项目是否被共享?

    我不希望很多人知道这一点 但是有没有办法检查 Scratch 项目 ID 是否属于共享项目 例如 项目 ID3是一个实际项目 但不共享 而 ID399293697是共享的 那么我如何使用 JavaScript 来查看这些是否共享呢 我搜索了
  • “RVM 不是函数”错误

    RVM 已正确安装在我的计算机上 运行 Mac OSX 10 6 8 并且运行良好 奇怪的是 要运行它 我必须使用source rvm scripts rvm对于每个新会话 我尝试从它创建一个符号链接 opt local bin rvm 但
  • 如何删除 poi 3.8 中的超链接?

    我在读取包含 poi 中超链接文本的 Excel 文件时遇到一些问题 数据是这样的 excel文件 1 type category job type position name email 2 测试 开发商 兼职 经理 洪 asdf dsa
  • 广播接收器中的 Android AlarmManager

    我有广播接收器 该广播接收器应安排警报 通常我会这样做 AlarmManager am AlarmManager getSystemService ALARM SERVICE am set AlarmManager RTC time myP
  • 如何保持 Mercurial 存储库较小?

    我的中央存储库存储在 8GB USB 记忆棒上 我不小心提交了一些大文件 因此存储库不再适合放在内存条上 有办法纠正这种情况吗 我投票赞成了吸引人的答案 因为他有你可能会使用的步骤 但这里有一个方便的列表 不过 首先要提醒一下 如果您已经将
  • 使用 Boost::spirit 编写的解析器存在性能问题

    我想解析一个如下所示的文件 类似 FASTA 的文本格式 gt InfoHeader Some text sequence that has a line break after every 80 characters gt InfoHea
  • Facebook og:图像未以全尺寸显示

    从 ElfYourself com 共享视频时 发送到 Facebook 的 OG 图像为 130x130 像素 Facebook 表示 这是它将在新闻提要 时间轴中显示的最大尺寸 然而 Facebook 在图像提要中实际显示的是 90x9
  • 我们可以在 sails 中的 Create() 回调之后/之前更改属性值吗?

    我有一个场景 我必须用模型的 id 填充模型的属性 对于例如 在用户模型中 module exports attributes activation link string afterCreate function value cb val
  • java.lang.ClassNotFoundException:org.apache.commons.fileupload.FileItemFactory [重复]

    这个问题在这里已经有答案了 我已关注本教程 http www tutorialspoint com servlets servlets file uploading htm用于使用 servlet 进行文件上传 这是文件夹结构 使用 Ecl
  • 无法获取默认调试密钥库位置

    我在 Android Studio 设置中更改了项目默认位置 Documents Android Studio projects to Documents AndroidProjects 然后我在文件资源管理器中将现有项目从前者移动到后者
  • Play框架:继承按类型排序

    在我的应用程序中 我有两个课程 Group Model 和一个基类Element 我使用单表策略来持久化这些模型 strategy InheritanceType SINGLE TABLE 因此一列dtype在我的表中创建 我现在尝试根据此
  • 修复了使用 FlatList 进行原生反应的页脚

    下列的这个问题 https stackoverflow com questions 29447715 react native fixed footer在带有 ScrollView 的固定页脚上 我试图在屏幕上实现固定页脚FlatList
  • jquery防止窗口滚动

    我正在 jquery 中开发一个选择菜单替换 首先 我必须通过添加来使新的选择菜单可聚焦tabindex 0 到容器 然后 我禁用原始选择菜单的焦点并将焦点放在新菜单上 当新的焦点被聚焦并按下向上和向下箭头时 选项会相应改变 但有一个大问题
  • 在Python中从pdf中提取印地语编写的文本[重复]

    这个问题在这里已经有答案了 我想从 pdf 文档中提取印地文输入的文本 我已附上示例页面的图像 https i stack imgur com UkT86 jpg我正在处理 我尝试使用 pdfminer 从中获取文本 但文本是乱码 可能是由
  • 悬停时的 jQuery 卡片动画

    当鼠标悬停在其中一张卡片上时 其余卡片应正确地逐一减小大小 例如 将鼠标悬停在卡片 1 上 目前我的解决方案是一一添加和删除类 但我想知道是否有更好的方法使用 jQuery 来完成它 card mouseover function card
  • 超出低磁盘水位线 [??%]

    我在我的开发机器 一台笔记本 中使用 Elasticsearch 1 4 4 一切都设置为默认值 因为我从未更改过任何设置 当我启动它时 我通常会收到以下消息 2015 10 27 09 38 31 588 INFO node Milan
  • Android 应用程序关闭时如何保持 Web 套接字连接处于活动状态

    我正在寻找一个应用程序 向 websocket 发送消息 以便在计算机内的特定参数发生变化时启用通知 参数在计算机中发生变化 通过 websocket 传输 然后到达我的应用程序 这部分是正确的 对吧 即使我的应用程序关闭 我如何接收这些
  • 如何在 Linux (Raspberry Pi) 上从帧缓冲区获取像素颜色

    我正在尝试编写一个小程序来根据屏幕上某些像素的颜色来控制 RGB LED 的颜色 由于这是在运行 Raspbmc 的 Raspberry Pi 上 我无法使用 XLib 因为所有内容都是从帧缓冲区中绘制的 不确定这是否属实 但从我在常见问题
  • 禁用功能区按钮

    我想禁用而不是隐藏特定列表类型上的功能区按钮 特别是 Ribbon ListItem New NewListItem 在网络上 我可以找到很多帖子向我展示删除 隐藏按钮的方法 但没有一个真正有价值的帖子可以告诉我如何在自定义列表类型中禁用现
  • Streamlit:如何使用按钮重新加载页面并在每次单击后存储以前的信息

    我的应用程序的目的是在填写表格后构建一个 可下载的 tsv 文件 每个表格页面都与新学生的信息相关 所以我总是有相同的页面结构 每个学生都有相同的表格 我想要的是添加一个按钮 为每个新学生生成一个新页面 最后 结束 按钮应显示表格 例如使用