Streamlit入门
1、Streamlit是什么
Streamlit 是一个用于快速构建数据应用的开源 Python 库,由 Streamlit 公司开发并维护。它极大地简化了从数据脚本到交互式 Web 应用的转化过程,让开发者无需具备前端开发的专业知识,就能轻松创建出美观、实用的交互式应用。
Streamlit≈前端框架+后端框架+云服务器
2、基本使用方法
基本组件
1、pip install streamlit
2、测试是否安装成功:streamlit hello(一个示例网页)
如果没有立即自动跳转到网页,而是像这样:
则再在Email行输入回车即可
3、import streamlit as st
4、运行自定义网页,streamlit run .\test1.py(streamlit run + Python脚本的路径)
5、终止服务器,按ctrl+C即可
6、点击网页右上角的rerun,让代码改动在网页上生效;
Always rerun可以一边修改代码,一边生效(要手动保存后)。
import streamlit as st
import pandas as pd# 可以传markdown语法的参数
st.write("### 新年快乐")# 省略.write也可以直接打印
123a=10
a[11,22,33]{"a":"1","b":"2","c":3}# 大标题
st.title("我的个人网站💡")# 图片
st.image("E:\streamlit\source\image.png",width=300)# 表格
data={ #创建一个包含学生信息的字典(键是列名)'姓名': ['张三', '李四', '王五'],'年龄': [20, 21, 22],'成绩': [85, 90, 78]
}df=pd.DataFrame(data) #使用字典创建DataFramest.dataframe(df) #显示表格,直接写df也可以————交互式表格
dfst.divider() #分割线st.table(df) #非交互式静态表格
import streamlit as st# 文字输入
name = st.text_input("请输入你的名字:")
if name:st.write(f"你好,{name}")st.divider()# 将text_input的type值定为password,就是输入密码了
password=st.text_input("请输入密码:",type="password")st.divider()# 输入长文本,要用到大区域,可以手动调节文本框的长度
paragraph = st.text_area("请输入你的自我介绍:")st.divider()# 数字输入
age=st.number_input("请输入你的年龄:",value=20,min_value=0,max_value=150,step=1)
st.write(f"你的年龄是:{age}岁")st.divider()# 勾选框
checked = st.checkbox("我同意以上条款") # 勾选了就返回true,否则是false
if checked:st.write("感谢您的同意!")st.divider()# 按钮
submitted = st.button("提交")
if submitted:st.write("提交成功!")
streamlit什么时候会重新运行整个文件呢?
1、对源代码进行修改后
2、用户与组件进行了交互后(比如输入文本并回车,点击了按钮,拖动了滑块),
文件就会从头到尾重新运行,从而对里面的一些变量值进行更新

注意:使用number_input时,将step设置为1,就限制了输入值最终只能是整数

number_input的另一个参数:


import streamlit as st# 单选按钮
gender = st.radio("你的性别是什么", ["男性","女性","跨性别"], #options选项:可迭代对象,列表或元组index=None) #index设置初始选中的选项索引,默认为0,设置等于None值时无初始设置
if gender:st.write(f"你选择的性别是{gender}")st.divider()# 单选框
contact = st.selectbox("你希望通过什么方式联系?",["微信","QQ","邮箱","电话","其它"])
st.write(f"好的,我们会通过{contact}联系你")st.divider()# 多选框
fruits = st.multiselect("你喜欢的水果是什么?",["苹果","西瓜","橙子","香蕉"]) #返回的是选中元素组成的列表
for fruit in fruits:st.write(f"你选择的水果是{fruit}")st.divider()# 滑块(通过拖动来选择数字)
height = st.slider("你的身高是多少厘米?",value=160.0,min_value=100.0,max_value=230.0,step=0.5)
st.write(f"你的身高是{height}厘米")st.divider()# 文件上传器
uploaded_file = st.file_uploader("请上传你的文件",type=["py"]) #type参数限制了可以上传的文件类型,"py"表示python代码文件
## 如果用户没有上传文件,uploaded_file 的值为 None;如果用户上传了文件,uploaded_file 是 UploadedFile 类的一个实例,该实例包含了上传文件的相关信息,如文件名、文件内容等。
if uploaded_file:st.write(f"你上传的文件是{uploaded_file.name}")st.write(f"文件内容如下:{uploaded_file.read().decode('utf_8')}")
## uploaded_file.read() 是 UploadedFile 类的一个方法,用于读取上传文件的内容。该方法返回一个字节字符串(bytes 类型),表示文件的二进制内容。
## 由于 uploaded_file.read() 返回的是字节字符串,如果文件是文本文件,在显示时可能需要进行解码操作,例如使用 uploaded_file.read().decode('utf-8') 将字节字符串解码为 Unicode 字符串,以确保中文等非 ASCII 字符能够正确显示。
布局
侧边栏和列
import streamlit as st# 侧边栏
with st.sidebar:name = st.text_input("请输入你的名字:")if name:st.write(f"你好,{name}")# 多列布局
# (column1,column2,column3) = st.columns(3) 将布局划分为三列,并且将这三列分别赋值给变量 column1、column2 和 column3
(column1,column2,column3) = st.columns([1,2,1]) #当st.columns()的参数是一个数字列表时,列表中的每个元素代表对应列的相对宽度# 第一列里有什么(有缩进的才是):
with column1:password=st.text_input("请输入密码:",type="password")with column2:paragraph = st.text_area("请输入你的自我介绍:")with column3:age=st.number_input("请输入你的年龄:",value=20,min_value=0,max_value=150,step=1)st.write(f"你的年龄是:{age}岁")st.divider()checked = st.checkbox("我同意以上条款")
if checked:st.write("感谢您的同意!")st.divider()submitted = st.button("提交")
if submitted:st.write("提交成功!")
选项卡和折叠展开
import streamlit as st# 创建标签页界面的函数。它接收一个列表作为参数,列表中的每个元素代表一个标签页的标题。
# 返回值是一个包含多个标签页对象的元组
(tab1,tab2,tab3) = st.tabs(["性别","联系方式","喜好水果"])with tab1:gender = st.radio("你的性别是什么", ["男性","女性","跨性别"], index=None) if gender:st.write(f"你选择的性别是{gender}")with tab2:contact = st.selectbox("你希望通过什么方式联系?",["微信","QQ","邮箱","电话","其它"])st.write(f"好的,我们会通过{contact}联系你")with tab3:fruits = st.multiselect("你喜欢的水果是什么?",["苹果","西瓜","橙子","香蕉"]) for fruit in fruits:st.write(f"你选择的水果是{fruit}")st.divider()# 折叠展开组件:展示非关键信息,平时折叠,需要时展开,提高页面上的信息展示效率
# with st.expander("展开区域标题"):
with st.expander("身高信息"):height = st.slider("你的身高是多少厘米?",value=160.0,min_value=100.0,max_value=230.0,step=0.5)st.write(f"你的身高是{height}厘米")st.divider()uploaded_file = st.file_uploader("请上传你的文件",type=["py"])
if uploaded_file:st.write(f"你上传的文件是{uploaded_file.name}")st.write(f"文件内容如下:{uploaded_file.read().decode('utf_8')}")
会话状态
当我们打开一个新的浏览器标签,进入到这个网页,就是一个新的会话。关闭标签,会话才结束。
会话状态可以保留和共享用户会话中的变量,只要用户没有关闭标签,会话中的状态就可以被保留。
import streamlit as stif "a" not in st.session_state: # 如果a还没在会话状态中st.session_state.a=0 # 则把a加入会话状态,并赋值为0clicked = st.button("加1")
if clicked:st.session_state.a += 1
st.write(st.session_state.a) print(st.session_state) #{'a': 10}
多页面网站
把多个页面归在同一个网站,而不是每个页面单独一个网站
1、选择其中一个页面作为主页(比如page1.py)
2、把剩下的页面移动到pages文件夹下,必须叫pages
3、streamlit run page1.py即可

相关文章:
Streamlit入门
1、Streamlit是什么 Streamlit 是一个用于快速构建数据应用的开源 Python 库,由 Streamlit 公司开发并维护。它极大地简化了从数据脚本到交互式 Web 应用的转化过程,让开发者无需具备前端开发的专业知识,就能轻松创建出美观、实用的交互式应…...
列表(列表是什么)
你将学习列表是什么以及如何使用列表元素。列表让你能够在一个地方存储成组的信息,其中可以只包含几个元素,也可以包含数百万个元素。 列表是新手可直接使用的最强大的Python功能之一,它融合了众多重要的编程概念。 列表是什么 列表 由一系列…...
笔记本搭配显示器
笔记本:2022款拯救者Y9000P,显卡RTX3060,分辨率2560*1600,刷新率:165Hz,无DP1.4口 显示器:2024款R27Q,27存,分辨率2560*1600,刷新率:165Hz &…...
基于排队理论的物联网发布/订阅通信系统建模与优化
论文标题 英文标题:Queuing Theory-Based Modeling and Optimization of a Publish/Subscribe IoT Communication System 中文标题:基于排队理论的物联网发布/订阅通信系统建模与优化 作者信息 Franc Pouhela Anthony Kiggundu Hans D. Schotten …...
指针(C语言)从0到1掌握指针,为后续学习c++打下基础
目录 一,指针 二,内存地址和指针 1,什么是内存地址 2,指针在不同系统下所占内存 三,指针的声明和初始化以及类型 1,指针的声明 2,指针 的初始化 1, 初始化方式优点及适用场景 4,指针的声明初始化类型…...
实验八 JSP访问数据库
实验八 JSP访问数据库 目的: 1、熟悉JDBC的数据库访问模式。 2、掌握使用My SQL数据库的使用 实验要求: 1、通过JDBC访问mysql数据,实现增删改查功能的实现 2、要求提交实验报告,将代码和实验结果页面截图放入报告中 实验过程&a…...
Day31-【AI思考】-关键支点识别与战略聚焦框架
文章目录 关键支点识别与战略聚焦框架**第一步:支点目标四维定位法****第二步:支点验证里程碑设计****第三步:目标网络重构方案****第四步:动态监控仪表盘** 执行工具箱核心心法 关键支点识别与战略聚焦框架 让思想碎片重焕生机的…...
DeepSeek与其他大模型相比
DeepSeek与其他大模型相比 与GPT-4对比 性能方面 推理速度:DeepSeek在解决复杂的数学、物理和逻辑推理问题方面速度惊人,是ChatGPT的两倍。“幻觉”现象:在处理需要网络信息检索的任务时,DeepSeek的“幻觉”现象似乎比ChatGPT更少。创意任务:ChatGPT在创意性任务,如创作…...
在深度Linux (Deepin) 20中安装Nvidia驱动
文章创作不易,麻烦大家点赞关注收藏一键三连。 在Deepin上面跑Tensorflow, pytorch等人工智能框架不是一件容易的事情。特别是如果你要使用GPU,就得有nvidia的驱动。默认情况下Deepin系统自带的是nouveau开源驱动。这是没办法用tensorflow的。下面内容是…...
“LoRA技术中参数初始化策略:为何A参数采用正态分布而B参数初始化为0”
在LoRA(Low-Rank Adaptation)中,参数A和B的初始化策略是经过精心设计的,以确保模型训练的稳定性和有效性。具体来说,参数A通常被初始化为正态分布,而参数B则初始化为0。这样的设计有以下几个优点࿱…...
C语言初阶力扣刷题——349. 两个数组的交集【难度:简单】
1. 题目描述 力扣在线OJ题目 给定两个数组,编写一个函数来计算它们的交集。 示例: 输入:nums1 [1,2,2,1], nums2 [2,2] 输出:[2] 输入:nums1 [4,9,5], nums2 [9,4,9,8,4] 输出:[9,4] 2. 思路 直接暴力…...
理解动手学深度学习的自编包d2l
跟着李沐的《动手学深度学习-PyTorch版》入门Python编程和Pytorch框架,以前是重度Matlab用户,对于Python里的各种包很不习惯。特别是,本书还自己做了一个名为d2l包,有几个问题很是困惑。今天终于弄明白了,写在这里&…...
RK3568使用opencv(使用摄像头捕获图像数据显示)
文章目录 一、opencv相关的类1. **cv::VideoCapture**2. **cv::Mat**3. **cv::cvtColor**4. **QImage**5. **QPixmap**总结 二、代码实现 一、opencv相关的类 1. cv::VideoCapture cv::VideoCapture 是 OpenCV 中用于视频捕捉的类,常用于从摄像头、视频文件、或者…...
OpenEuler学习笔记(十六):搭建postgresql高可用数据库环境
以下是在OpenEuler系统上搭建PostgreSQL高可用数据环境的一般步骤,通常可以使用流复制(Streaming Replication)或基于Patroni等工具来实现高可用,以下以流复制为例: 安装PostgreSQL 配置软件源:可以使用O…...
数学平均数应用
给定一个长度为 n 的数组 a。在一次操作中,你可以从索引 2 到 n−1中选择一个索引i,然后执行以下两个操作之一: 将 a[i−1] 减少 1,同时将 a[i1] 增加 1。 将 a[i1] 减少 1,同时将 a[i−1] 增加 1。 在每次操作后&…...
元旦和春节取名的历史变迁
在中国漫长的历史长河中的春节,真要追溯起来也只有一百多年历史——是从晚清时期才逐渐出现在国人的生活里的,而且那时不叫“春节”而叫“元旦”。只不过随着历史的发展过程,“过年”这个名词也一直在演变,直至1949年最终才定下来…...
USB鼠标的数据格式
USB鼠标的数据格式由HID(Human Interface Device)协议定义,通常包含3个字节的标准数据,具体格式如下: 字节内容描述第1字节按键状态Bit 0: 左键按下(1)<br>Bit 1: 右键按下(1…...
【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南
1.27 线性代数王国:矩阵分解实战指南 #mermaid-svg-JWrp2JAP9qkdS2A7 {font-family:"trebuchet ms",verdana,arial,sans-serif;font-size:16px;fill:#333;}#mermaid-svg-JWrp2JAP9qkdS2A7 .error-icon{fill:#552222;}#mermaid-svg-JWrp2JAP9qkdS2A7 .erro…...
Kafka常见问题之 java.io.IOException: Disk error when trying to write to log
文章目录 Kafka常见问题之 java.io.IOException: Disk error when trying to write to log1. 问题概述2. 问题排查方向(1)磁盘空间不足(2)磁盘 I/O 故障(3)Kafka 日志文件损坏(4)Kaf…...
libOnvif通过组播不能发现相机
使用libOnvif库OnvifDiscoveryClient类, auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误: end of file or no input: message transfer interrupted or timed out(30 sec max recv delay)…...
51c自动驾驶~合集58
我自己的原文哦~ https://blog.51cto.com/whaosoft/13967107 #CCA-Attention 全局池化局部保留,CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制(CCA-Attention),…...
VB.net复制Ntag213卡写入UID
本示例使用的发卡器:https://item.taobao.com/item.htm?ftt&id615391857885 一、读取旧Ntag卡的UID和数据 Private Sub Button15_Click(sender As Object, e As EventArgs) Handles Button15.Click轻松读卡技术支持:网站:Dim i, j As IntegerDim cardidhex, …...
Python实现prophet 理论及参数优化
文章目录 Prophet理论及模型参数介绍Python代码完整实现prophet 添加外部数据进行模型优化 之前初步学习prophet的时候,写过一篇简单实现,后期随着对该模型的深入研究,本次记录涉及到prophet 的公式以及参数调优,从公式可以更直观…...
第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明
AI 领域的快速发展正在催生一个新时代,智能代理(agents)不再是孤立的个体,而是能够像一个数字团队一样协作。然而,当前 AI 生态系统的碎片化阻碍了这一愿景的实现,导致了“AI 巴别塔问题”——不同代理之间…...
【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)
骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术,它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton):由层级结构的骨头组成,类似于人体骨骼蒙皮 (Mesh Skinning):将模型网格顶点绑定到骨骼上,使骨骼移动…...
Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)
参考官方文档:https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java(供 Kotlin 使用) 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...
短视频矩阵系统文案创作功能开发实践,定制化开发
在短视频行业迅猛发展的当下,企业和个人创作者为了扩大影响力、提升传播效果,纷纷采用短视频矩阵运营策略,同时管理多个平台、多个账号的内容发布。然而,频繁的文案创作需求让运营者疲于应对,如何高效产出高质量文案成…...
GraphQL 实战篇:Apollo Client 配置与缓存
GraphQL 实战篇:Apollo Client 配置与缓存 上一篇:GraphQL 入门篇:基础查询语法 依旧和上一篇的笔记一样,主实操,没啥过多的细节讲解,代码具体在: https://github.com/GoldenaArcher/graphql…...
Python实现简单音频数据压缩与解压算法
Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中,压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言,提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...
人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型
在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重,适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解,并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...

