streamlit示例-极简

登录注册多步骤任务和实时展示结果

封装后的 Streamlit 示例代码

访问演示地址

import streamlit as st
import time# In-memory "database" for simplicity
users_db = {'admin': {'password': 'admin123', 'name': 'Admin', 'age': 30, 'favorite_color': 'blue'}
}def register_user(username, password, name, age):"""Register a new user."""if username in users_db:return Falseusers_db[username] = {'password': password, 'name': name, 'age': age}return Truedef login_user(username, password):"""Authenticate a user."""if username in users_db and users_db[username]['password'] == password:st.session_state['logged_in'] = Truest.session_state['user'] = users_db[username]return Truereturn Falsedef logout_user():"""Log out the current user."""st.session_state['logged_in'] = Falsest.session_state.pop('user', None)st.session_state.pop('step1_done', None)st.session_state.pop('step2_done', None)st.experimental_rerun()def show_registration():"""Display the registration form."""st.header("Register")reg_username = st.text_input("Username", key="reg_user")reg_password = st.text_input("Password", type="password", key="reg_pass")reg_name = st.text_input("Name", key="reg_name")reg_age = st.number_input("Age", min_value=0, max_value=120, step=1, key="reg_age")if st.button("Register"):if register_user(reg_username, reg_password, reg_name, reg_age):st.success("Registration successful. Please log in.")else:st.error("Username already exists. Please choose another one.")def show_login():"""Display the login form."""st.header("Login")username = st.text_input("Username", key="login_user")password = st.text_input("Password", type="password", key="login_pass")if st.button("Login"):if login_user(username, password):st.success(f"Welcome back, {st.session_state['user']['name']}!")else:st.error("Invalid username or password.")def show_task():"""Display the multi-step task."""st.title(f"Welcome, {st.session_state['user']['name']}!")# Step 1: Confirm personal detailsst.header("Step 1: Confirm Your Details")name = st.text_input("Name", value=st.session_state['user']['name'])age = st.number_input("Age", value=st.session_state['user']['age'], min_value=0, max_value=120, step=1)if st.button("Submit Step 1"):st.session_state['user']['name'] = namest.session_state['user']['age'] = agest.session_state['step1_done'] = Truest.write(f"Hello, {name}. You are {age} years old.")time.sleep(1)  # Simulate a processing delay# Step 2: Update favorite colorif 'step1_done' in st.session_state:st.header("Step 2: Update Your Favorite Color")favorite_color = st.text_input("What's your favorite color?", value=st.session_state['user']['favorite_color'])if st.button("Submit Step 2"):st.session_state['user']['favorite_color'] = favorite_colorst.session_state['step2_done'] = Truest.write(f"Got it! Your favorite color is {favorite_color}.")time.sleep(1)  # Simulate a processing delay# Step 3: Final Confirmation and Real-time Processingif 'step2_done' in st.session_state:st.header("Step 3: Final Confirmation")confirm = st.checkbox("Confirm and process the data")if confirm:st.write("Processing data...")progress_bar = st.progress(0)# Simulate a real-time processing taskfor i in range(100):progress_bar.progress(i + 1)time.sleep(0.05)  # Simulate real-time data streamingst.success("Task Completed!")st.write(f"Summary: {name}, {age} years old, likes {favorite_color}.")# Option to logoutif st.button("Logout"):logout_user()def main():"""Main function to control the app flow."""st.title("Streamlit Application with Login and Multi-step Task")if 'logged_in' not in st.session_state:st.session_state['logged_in'] = Falseif not st.session_state['logged_in']:show_registration()show_login()else:show_task()if __name__ == "__main__":main()

代码说明

  1. 封装函数

    • register_user:处理用户注册。
    • login_user:处理用户登录。
    • logout_user:处理用户登出。
    • show_registration:显示注册表单。
    • show_login:显示登录表单。
    • show_task:显示多步骤任务界面。
  2. main() 函数

    • 控制应用程序的主要流程。
    • 如果用户未登录,则显示登录和注册表单。
    • 如果用户已登录,则显示多步骤任务界面。
  3. 模块化设计

    • 通过函数封装,代码结构更加清晰,便于维护和扩展。
    • 各个功能模块独立,使得添加新功能或修改现有功能变得更加容易。

运行该代码

将这段代码保存为一个 Python 文件(例如 streamlit_app.py),然后在终端中运行以下命令来启动 Streamlit 应用:

streamlit run streamlit_app.py

启动应用后,你可以注册新用户、登录并体验多步骤任务的功能,所有功能齐全且结构更加简洁。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.mzph.cn/news/878620.shtml

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈email:809451989@qq.com,一经查实,立即删除!

相关文章

(C++ STL)list类的简单模拟实现与源码展示

list类的简单模拟实现 一、前言二、ListNode 单个节点的成员变量三、ListIterator 迭代器四、ReverseListIterator 迭代器五、list 的成员变量与初始化六、list 部分函数实现inserterase 七、list 源代码 以下代码环境为 VS2022 C。 一、前言 list类 本质上是数据结构中的双向…

JVM GC 调优

文章目录 引言I 调整JVM的默认堆内存配置1.1 java命令启动jar包时配置JVM 的内存参数1.2 基于Tomcat服务器部署的java应用,配置JVM 的内存参数II JVM GC 调优基本概念: 应用程序的响应时间(RT)和吞吐量(QPS)JVM调优原理调优思路调优方法JVM调优技巧建议引言 内存参数:ht…

七款最佳的渗透测试工具(非常详细)零基础入门到精通,收藏这一篇就够了

渗透测试工具是模拟对计算机系统、网络或 Web 应用程序的网络攻击的软件应用程序,它们的作用是在实际攻击者之前发现安全漏洞。它们可以作为系统的压力测试,揭示哪些区域可能会受到真正的威胁。 本文我将介绍七款最佳的渗透测试工具。 1 Kali Linux K…

Maven入门:自动化构建工具的基本概念与配置

一、什么是Maven 目前无论使用IDEA还是Eclipse等其他IDE,使用里面 ANT 工具帮助我们进行编译,打包运行等工作。Apache基于ANT进行了升级,研发出了全新的自动化构建工具Maven。 Maven使用项目对象模型(POM-Project Object Model&…

视频合并在线工具哪个好?好用的视频合并工具推荐

当我们手握一堆零散却各有千秋的视频片段时,是否曾幻想过它们能像魔法般合并成一部完整、流畅的故事? 别担心,今天咱们就来一场“视频合并大冒险”,揭秘几款视频合并软件手机免费工具,帮助你在指尖上实现创意无限的视…

四、配置三层交换实验组网

一、实验拓扑 二、实验目的 通过配置交换机&#xff0c;令不同vlan间的主机能够互相通信 三、实验步骤 SW12 <Huawei>undo terminal monitor Info: Current terminal monitor is off. <Huawei>system-view Enter system view, return user view with CtrlZ. [H…

3、DjangoAdmin导出excel和csv文件

一、导出Excel 1、安装openpyxl库 2、admin文件 # 导入openpyxl库中的Workbook类&#xff0c;用于创建Excel文件 from openpyxl import Workbook # 导入Django的admin模块&#xff0c;用于在Django admin后台注册和管理模型 from django.contrib import admin # 导入…

2025中国(西安)国际军民两用新材料展览会

时 间&#xff1a;2025年3月14-16日 地 点&#xff1a;西安国际会展中心 ◆展会背景Exhibition background&#xff1a; 随着科技的飞速发展&#xff0c;新材料在军事领域的应用逐渐凸显出…

EDIUS X 10.34.9631 视频剪辑软件 下载 包含安装说明

下载地址(资源制作整理不易&#xff0c;下载使用需付费&#xff0c;不能接受请勿浪费时间下载) 链接&#xff1a;https://pan.baidu.com/s/1P2wKxVcSx5WzAtHXCaAp5A?pwd227i 提取码&#xff1a;227i

ant design vue+vue3+ts实现一天内按钮只能点击2次,并置灰,且过当天0点时需复原~

1、需求&#xff1a;在主页面中点击新增按钮&#xff0c;弹出弹窗&#xff0c;此时弹窗中有一个确定按钮&#xff0c;需实现该确定按钮在当天0点前指点点击2次&#xff0c;超过2次置灰&#xff0c;过了零点复原。 思路&#xff1a;首先弹窗通过v-if显示与隐藏弹窗子组件&#…

【Linux网络】应用层协议HTTP(1)

&#x1f389;博主首页&#xff1a; 有趣的中国人 &#x1f389;专栏首页&#xff1a; Linux网络 &#x1f389;其它专栏&#xff1a; C初阶 | C进阶 | 初阶数据结构 小伙伴们大家好&#xff0c;本片文章将会讲解 应用层协议HTTP 的相关内容。 如果看到最后您觉得这篇文章写得…

OCI编程高级篇(十八) OCI连接池概念

数据库连接池已经不是新概念了&#xff0c;它以有限的连接让外部更多的客户来访问数据库&#xff0c;一般用于中间服务器中&#xff0c;OCI也有连接池的概念。OCI的连接池是由OCI自己管理的&#xff0c;不需要应用干预&#xff0c;程序通过函数从连接池中得到一个会话&#xff…

【Android】 工具篇:ProxyPin抓包详解---夜神模拟器

1️⃣ProxyPin介绍 ProxyPin是一种基于MITM(中间人攻击)的抓包工具,主要用于移动应用程序的安全测试和调试。下面是关于ProxyPin的详解。 2️⃣ 安裝和使用 安裝 下载地址 https://gitee.com/wanghongenpin/network-proxy-flutter/releases 直接拖入模拟器就可以了,打开…

github源码指引:共享内存、数据结构与算法:字符串池StringPool

初级代码游戏的专栏介绍与文章目录-CSDN博客 我的github&#xff1a;codetoys&#xff0c;所有代码都将会位于ctfc库中。已经放入库中我会指出在库中的位置。 这些代码大部分以Linux为目标但部分代码是纯C的&#xff0c;可以在任何平台上使用。 专题&#xff1a;共享内存、数…

5. MyBatis 如何实现数据库类型和 Java 类型的转换的?

MyBatis 在处理数据库查询结果或传递参数时&#xff0c;需要将数据库类型与 Java 类型之间进行转换。MyBatis 提供了多种方式来实现这种类型转换&#xff0c;主要通过内置的 TypeHandler&#xff08;类型处理器&#xff09;机制。 1. TypeHandler 的作用 TypeHandler 是 MyBat…

C++ STL 之哈希 map unordered_map

一. 概述 在C中&#xff0c;unordered_map 是一个关联容器&#xff0c;是一种基于哈希表的键值对容器&#xff0c;它存储了键值对&#xff08;key-value&#xff09;&#xff0c;其中每个键&#xff08;key&#xff09;都是唯一的。 二. map & unordered_map的区别 map内…

rqueue使用笔记

文章目录 maven依赖引入监听器注入和发送消息接收消息属性配置 项目用到rqueue&#xff0c;虽然知道和redis相关&#xff0c;但是肯定有不一样的地方&#xff0c;做个笔记。 maven依赖 网上找个能用的版本就行&#xff0c;如&#xff1a; <dependency><groupId>c…

「深入理解」HTML Meta标签:网页元信息的配置

「深入理解」HTML Meta标签&#xff1a;网页元信息的配置 HTML的<meta>元素用于提供关于HTML文档的元数据&#xff08;metadata&#xff09;&#xff0c;这些信息对于浏览器和其他处理HTML文档的应用程序来说是非常有用的&#xff0c;如&#xff1a;<base>、<li…

【网络安全】服务基础第一阶段——第九节:Windows系统管理基础---- Windows_AD域

目录 一、域与活动目录 1.1 工作组 1.2 域 1.2.1 域&#xff08;Domain&#xff09; 1.2.2 域控制器&#xff08;Domain Controller&#xff0c;DC&#xff09; 1.2.3 功能和角色 1.2.4 管理和监控 1.2 5 域结构 1.3 组织单元&#xff08;Organizational Unit&#xff…

集成电路学习:什么是IP知识产权

一、IP&#xff1a;知识产权 IP是Intellectual Property的缩写&#xff0c;即知识产权。知识产权是一种无形的财产权&#xff0c;也称智力成果权&#xff0c;它指的是通过智力创造性劳动所获得的成果&#xff0c;并且是由智力劳动者对成果依法享有的专有权利。这种权利包括人身…