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,一经查实,立即删除!

相关文章

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

渗透测试工具是模拟对计算机系统、网络或 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…

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

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

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

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

「深入理解」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;并且是由智力劳动者对成果依法享有的专有权利。这种权利包括人身…

性能优化:自动化处理系统设计

性能优化&#xff1a;自动化处理系统设计 前言需求分析系统设计1. 调度中心2. 任务执行器3. 错误处理机制4. 通知系统5. 报表生成器6. 日志记录器 技术实现结语 前言 在当今这个信息爆炸、技术日新月异的时代&#xff0c;企业面临着前所未有的挑战和机遇。随着业务量的不断增长…

基于Yolov5_6.1、LPRNet、PySide6开发的车牌识别系统

项目概述 项目背景 随着车辆数量的不断增加&#xff0c;车牌识别系统在交通管理、停车场自动化等领域变得越来越重要。本项目利用先进的深度学习技术和现代图形用户界面框架来实现高效的车牌识别功能。 项目特点 高效识别&#xff1a;采用 YOLOv5_6.1 进行车牌定位&#xff…

差分传输与单端传输

差分与单端传输 本页讨论模拟信号传输中的两个概念&#xff1a;“单端”和“差分”。模拟信号用于将模拟仪器的输出传送到数字转换器。虽然数字信号对干扰的容忍度相对较高&#xff0c;但模拟信号却可能受到环境中电磁波的干扰和改变。本文档将解释这一问题&#xff0c;并描述…

OcrLiteNcnn:Windows环境打包及Java调用

目录结构 前言cmake安装源码下载说明Windows源码编译执行“cmake -DCMAKE_BUILD_TYPE=Release ..”执行“cmake --build . --config Release -- -m:6”编译完成识别图片命令行调用Java调用前言 Java实现OCR识别图片中的文字,小编先前整理过一篇在Linux环境中基于“ChineseOcr…

全局安装react

1、首先安装react脚手架 npm install -g create-react-app2、创建react项目 create-react-app my-app3、 PS D:\桌面\papers\subject> create-react-app my-react-appCreating a new React app in D:\桌面\papers\subject\my-react-app.Installing packages. This might …

Docker安装Neo4j图数据库和APOC插件

文章目录 一、前言二、安装Neo4j三、测试Neo4j四、安装APOC插件五、测试APOC插件 一、前言 官方文档&#xff1a;https://neo4j.com/docs/operations-manual/current/docker/introduction/ 二、安装Neo4j 我这里以 5.23.0 版的 Neo4j 为例 拉取镜像 docker pull neo4j:5.23.0…

HarmonyOS NEXT 应用运行异常记录与解决(持续整理版)

问题一 App Launch Failed to get the device apiVersion. 解决方案 进入到设备管理&#xff0c;点击对应开启的模拟器设备&#xff0c;先将模拟器关闭&#xff0c;然后点击查出掉用户数据&#xff0c;再重启。 重启之后&#xff0c;一般能解决。如果遇到还是显示拿不到apiVer…

bash反弹shell分析

目录 介绍步骤 介绍 与目标主机建立连接的原理是利用漏洞执行ShellCode。 GetShell的实质是&#xff1a;执行ShellCode&#xff0c;将目标主机的Shell重定向到攻击机。拿到Shell利于后续的渗透。 所谓的反弹Shell是指GetShell的过程由目标主机主动发起&#xff08;反向连接&a…

Git如何安装和配置

一、Git 的安装 1、Git 的官网 Git (git-scm.com) 2、下载 Git for Windows 在官网下载好 Git 的安装文件后&#xff0c;接下来就可以进行安装了。 3、安装 Git 以管理员身份运行你下载的安装文件&#xff1a; 然后就可以进入安装向导了。 4、验证是否安装成功 当安装向…

【数据结构】--初始集合框架

1. 什么是集合框架 集合框架:Java中已经实现好的集合类&#xff08;一些已经由Java实现好的数据结构&#xff09;。Java的数据结构和C语言的数据结构是没有什么区别的&#xff0c;里面的区别就只是实现的语言不一样。不可能出现Java的单链表和C语言实现的单链表是两个不同的东…

idea配置svn发现安装的svn中的bin目录下没有svn.exe文件

问题描述 使用idea配置svn时&#xff0c;发现安装的svn没有svn.exe文件 解决方法 1、双击svn安装包&#xff0c;找到【modify】 2、默认安装时&#xff0c;没有安装command line client tools&#xff0c;里面是有svn.exe 3、选择will be installed on local hard drive 4、…