当前位置: 首页 > news >正文

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。这样的设计有以下几个优点&#xff1…...

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&#xff08;Human Interface Device&#xff09;协议定义&#xff0c;通常包含3个字节的标准数据&#xff0c;具体格式如下&#xff1a; 字节内容描述第1字节按键状态Bit 0: 左键按下&#xff08;1&#xff09;<br>Bit 1: 右键按下&#xff08;1…...

【Numpy核心编程攻略:Python数据处理、分析详解与科学计算】1.27 线性代数王国:矩阵分解实战指南

1.27 线性代数王国&#xff1a;矩阵分解实战指南 #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. 问题排查方向&#xff08;1&#xff09;磁盘空间不足&#xff08;2&#xff09;磁盘 I/O 故障&#xff08;3&#xff09;Kafka 日志文件损坏&#xff08;4&#xff09;Kaf…...

libOnvif通过组播不能发现相机

使用libOnvif库OnvifDiscoveryClient类&#xff0c; auto discovery new OnvifDiscoveryClient(QUrl(“soap.udp://239.255.255.250:3702”), cb.Build()); 会有错误&#xff1a; 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 全局池化局部保留&#xff0c;CCA-Attention为LLM长文本建模带来突破性进展 琶洲实验室、华南理工大学联合推出关键上下文感知注意力机制&#xff08;CCA-Attention&#xff09;&#xff0c;…...

VB.net复制Ntag213卡写入UID

本示例使用的发卡器&#xff1a;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的时候&#xff0c;写过一篇简单实现&#xff0c;后期随着对该模型的深入研究&#xff0c;本次记录涉及到prophet 的公式以及参数调优&#xff0c;从公式可以更直观…...

第一篇:Agent2Agent (A2A) 协议——协作式人工智能的黎明

AI 领域的快速发展正在催生一个新时代&#xff0c;智能代理&#xff08;agents&#xff09;不再是孤立的个体&#xff0c;而是能够像一个数字团队一样协作。然而&#xff0c;当前 AI 生态系统的碎片化阻碍了这一愿景的实现&#xff0c;导致了“AI 巴别塔问题”——不同代理之间…...

【OSG学习笔记】Day 16: 骨骼动画与蒙皮(osgAnimation)

骨骼动画基础 骨骼动画是 3D 计算机图形中常用的技术&#xff0c;它通过以下两个主要组件实现角色动画。 骨骼系统 (Skeleton)&#xff1a;由层级结构的骨头组成&#xff0c;类似于人体骨骼蒙皮 (Mesh Skinning)&#xff1a;将模型网格顶点绑定到骨骼上&#xff0c;使骨骼移动…...

Android 之 kotlin 语言学习笔记三(Kotlin-Java 互操作)

参考官方文档&#xff1a;https://developer.android.google.cn/kotlin/interop?hlzh-cn 一、Java&#xff08;供 Kotlin 使用&#xff09; 1、不得使用硬关键字 不要使用 Kotlin 的任何硬关键字作为方法的名称 或字段。允许使用 Kotlin 的软关键字、修饰符关键字和特殊标识…...

短视频矩阵系统文案创作功能开发实践,定制化开发

在短视频行业迅猛发展的当下&#xff0c;企业和个人创作者为了扩大影响力、提升传播效果&#xff0c;纷纷采用短视频矩阵运营策略&#xff0c;同时管理多个平台、多个账号的内容发布。然而&#xff0c;频繁的文案创作需求让运营者疲于应对&#xff0c;如何高效产出高质量文案成…...

GraphQL 实战篇:Apollo Client 配置与缓存

GraphQL 实战篇&#xff1a;Apollo Client 配置与缓存 上一篇&#xff1a;GraphQL 入门篇&#xff1a;基础查询语法 依旧和上一篇的笔记一样&#xff0c;主实操&#xff0c;没啥过多的细节讲解&#xff0c;代码具体在&#xff1a; https://github.com/GoldenaArcher/graphql…...

Python实现简单音频数据压缩与解压算法

Python实现简单音频数据压缩与解压算法 引言 在音频数据处理中&#xff0c;压缩算法是降低存储成本和传输效率的关键技术。Python作为一门灵活且功能强大的编程语言&#xff0c;提供了丰富的库和工具来实现音频数据的压缩与解压。本文将通过一个简单的音频数据压缩与解压算法…...

人工智能 - 在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型

在Dify、Coze、n8n、FastGPT和RAGFlow之间做出技术选型。这些平台各有侧重&#xff0c;适用场景差异显著。下面我将从核心功能定位、典型应用场景、真实体验痛点、选型决策关键点进行拆解&#xff0c;并提供具体场景下的推荐方案。 一、核心功能定位速览 平台核心定位技术栈亮…...