首页 > 编程语言 >推荐一个Python的前端框架Streamlit

推荐一个Python的前端框架Streamlit

时间:2024-06-20 17:29:53浏览次数:31  
标签:app Python 前端 st state key Streamlit data streamlit

WHY,为什么要用Streamlit

你是不是也想写一个简单的前端界面做些简单的展示和控制,不想写html、css、js,也用不到前后端分离,用不到特别复杂的Flask、Django等,如果你遇到类似这样的问题,我推荐你试试Streamlit。
在这里插入图片描述

Streamlit介绍

官网链接: https://streamlit.io/
官方文档:https://docs.streamlit.io/ 推荐多查看这个资料
A faster way to build and share data apps,Streamlit turns data scripts into shareable web apps in minutes. All in pure Python. No front‑end experience required.

更快地构建和共享数据应用程序Streamlit在几分钟内将数据脚本转换为可共享的web应用程序。 都是用纯Python编写的。不需要前端经验。

实际使用下来和官方介绍所说的一样,使用Streamlit可以快速搭建一个前端展示页面,并很方便的部署在服务器上。看几个样例:

文本的展示:
在这里插入图片描述

类似GPT的对话app:
在这里插入图片描述

安装

**注意:**对python版本有要求,需要python的版本在3.8以上,已测试3.8以下的版本无法运行。

step1: 建议创建一个虚拟环境

cd myproject
python -m venv .venv

step2: 激活这个环境

# Windows command prompt
.venv\Scripts\activate.bat

# Windows PowerShell
.venv\Scripts\Activate.ps1

# macOS and Linux
source .venv/bin/activate

step3:安装streamlit

pip install streamlit

#测试安装是否成功,执行下面命令,如果安装成功会打开浏览器弹出测试app
streamlit hello

安装成功

在这里插入图片描述

快速上手

创建一个app

1.创建一个python文件如:app.py
在这里插入图片描述
为了方便,我们使用了这种方式:import streamlit as st 导入Streamlit,后续直接用st进行调用即可。

2.给app创建个title

st.title('Hello Streamlit')

3.运行这个app

streamlit run app.py

完成启动,后续的代码改动,直接生效,不需要再重新启动。
在这里插入图片描述
4. 添加一些常见的元素

import streamlit as st

st.title('Hello Streamlit')

st.text_input('What is your name?')
st.button('Click here', type='primary')
st.slider(label='progress', min_value=0, max_value=100, step=1,value=20)

st.write('下面是一段markdown文本')
'''
## markdown耳机标题
正文内容
'''

在这里插入图片描述
可以看到这里直接用markdown的格式写内容。
在这里插入图片描述

其他示例项目

https://gw-quickview.streamlit.app/
在这里插入图片描述
https://prettymapp.streamlit.app/
在这里插入图片描述
https://mito-for-st-demo.streamlit.app/
在这里插入图片描述

进阶使用

布局

streamlit提供了container和columns的概念进行页面的划分和布局。在页面可以插入一个container,也可以分成几个column,这两者可以互相嵌套进行布局。
在这里插入图片描述

#数组里的数字,是将三列按照不同的比例进行了划分,第一列占了50%
c1,c2,c3 = st.columns([3, 2, 1])

官方示例:
在这里插入图片描述

缓存和状态

每次页面加载都会全局重新拉取数据了,如果有的数据特别大,体验就不太好,所以这里使用缓存可以避免每次都从接口请求加载。state可以用来控制一个状态的变量,这变量的变化,可以刷新到所有使用到的地方。
https://docs.streamlit.io/develop/api-reference/caching-and-state

缓存

在这里插入图片描述
缓存使用参考:

import streamlit as st

@st.cache_data
def fetch_and_clean_data(url):
    # Fetch data from URL here, and then clean it up.
    return data

d1 = fetch_and_clean_data(DATA_URL_1)
# Actually executes the function, since this is the first time it was
# encountered.

d2 = fetch_and_clean_data(DATA_URL_1)
# Does not execute the function. Instead, returns its previously computed
# value. This means that now the data in d1 is the same as in d2.

d3 = fetch_and_clean_data(DATA_URL_2)
# This is a different URL, so the function executes.

缓存数据持久化的方式,可以选择持久化到硬盘。

import streamlit as st

@st.cache_data(persist="disk")
def fetch_and_clean_data(url):
    # Fetch data from URL here, and then clean it up.
    return data
状态

在这里插入图片描述
状态的使用参考:

# Initialization
if 'key' not in st.session_state:
    st.session_state['key'] = 'value'

# Session State also supports attribute based syntax
if 'key' not in st.session_state:
    st.session_state.key = 'value'

读取和更新state:

# Read
st.write(st.session_state.key)

st.session_state.key = 'value2'     # Attribute API
st.session_state['key'] = 'value2'  # Dictionary like API
获取和修改url中的参数
# You can read query params using key notation
if st.query_params["first_key"] == "1":
    do_something()

# ...or using attribute notation
if st.query_params.second_key == "two":
    do_something_else()

# And you can change a param by just writing to it
st.query_params.first_key = 2  # This gets converted to str automatically

点击按钮触发函数

if st.button('Click here', type='primary'):
    st.write('点击了按钮')

在这里插入图片描述

弹窗

# 弹窗定义个函数,加上这个注解就可以了
@st.experimental_dialog("弹窗示例")
def alert_dialog():
    st.write('弹窗内容')
    if st.button('确认', key='ok'):
        st.rerun()
    if st.button('取消', key='cancel'):
        st.rerun()


if st.button("点击弹窗"):
    alert_dialog()

在这里插入图片描述

总结

这里介绍了常见的一些用法,更多使用参考官方文档:https://docs.streamlit.io/develop/api-reference

标签:app,Python,前端,st,state,key,Streamlit,data,streamlit
From: https://blog.csdn.net/Kingsea442/article/details/139797972

相关文章

  • python 如何动态的创建class
    classf1:def__init__(self):self.name="f1"defprintF1(self):print("thisisf1")classf2:def__init__(self):self.name="f2"defprintF2(self):print("thisisf2&q......
  • 记录一下麒麟3.0内网安装python通过jdbc连接达梦6数据库
    麒麟3.0基于RedHat4.1.2-42,此版本可以编译python3.8.3,但是内网无法安装libffi-dev,导致无法安装JPype1和JayDeBeApi,所以改用python2.7.181、安装python2.7.18https://www.python.org/ftp/python/2.7.18/Python-2.7.18.tgz#解压tar-zxvfPython-2.7.18.tgz#切换到新的目......
  • Centos7升级Python2.7到Python3.10
    在Centos7系统中,默认带的Python版本是Python2.7的,部分新的软件需要升级Python到3.x版本.步骤1、下载Python安装包wgethttps://www.python.org/ftp/python/3.10.1/Python-3.10.1.tgz步骤2、安装Python依赖包yuminstall-ylibffi-devel  yuminstall-yzlib-dev......
  • Python 基础详解:入门宝典(3)
    容器类型介绍:1.列表(List)列表是Python中最常用的数据结构之一,它是一个有序的可变序列,允许存储任意类型的元素。列表用方括号[]表示。特点有序:元素按照插入顺序排列。可变:可以修改元素的值或增加、删除元素。支持重复:可以包含重复的元素。#创建一个列表fruits=['a......
  • 测试之前端性能问题定位学习文档
    一、h5网页加载原理H5与native区别维度H5native原生 渲染方式 1、从服务器端下载html2、加载框架渲染依赖的js、css、图片3、请求接口数据4、调用浏览器内核渲染以上对网络要求比较高 1、静态资源提前打包到app,直接从本地读取静态资源2、请求接口数据......
  • Python期末复习题库(下)
    如果你对Python感兴趣,想要学习pyhton,这里给大家分享一份**Python全套学习资料**,都是我自己学习时整理的,希望可以帮到你,一起加油!1.(单选题)下列关于文件打开模式的说法,错误的是(C)。A.r代表以只读方式打开文件B.w代表以只写方式打开文件C.a代表以二进制形式打开......
  • 计算机毕业设计flask+python企业公司进销存管理系统
    1、内容和要求:(1)完成以下课题研究内容:①研究进销存系统相关理论、特征。②研究进销存系统背景和意义。③研究进销存系统现实发展前景。④对企业进销存系统进行需求分析。⑤设计和实现新疆世纪金桥企业进销存系统。⑥对设计的进销存系统进行测试。(2)完成......
  • python之异常捕获&清除的打印报错行
    python代码:importtimeimporttracebackfromthreadingimportThreaddeffun1():fun1_1()deffun2():t=Thread(target=fun2_1())t.start()deffun1_1():print('fun1_1')deffun2_1():1/0defmain():whileTr......
  • python的queue队列获取数据
    一概念Python中的队列(Queue)数据结构提供了get()方法用于获取队列的头部项,而不会删除该项。importqueue#创建一个队列对象q=queue.Queue()#向队列中添加一些元素q.put(1)q.put(2)q.put(3)#获取队列的头部项head=q.get()print("队列的头部项是:",head)......
  • 只听过 Python 做爬虫?不瞒你说 Java 也很强
    网络爬虫技术,早在万维网诞生的时候,就已经出现了,今天我们就一起来揭开它神秘的面纱!一、摘要说起网络爬虫,相信大家都不陌生,又俗称网络机器人,指的是程序按照一定的规则,从互联网上抓取网页,然后从中获取有价值的数据,随便在网上搜索一下,排在前面基本都是pyhton教程介绍。的确,pyhto......