Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象

这篇具有很好参考价值的文章主要介绍了Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

废话不多说,直接上干货

  1. 首先安装好所需要的库
pip install streamlit
  1. 新建一个 Python 文件(test.py),导入所需要的库,
import streamlit as st
import pandas as pd
  1. 打开命令,行输入命令,
streamlit run test.py

Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象

  1. 启动服务,可以看到输出信息证明已经成功启动了一个服务,浏览器会自动打开这个地址。
    Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象

  2. 现在页面什么东西都没有,加一句代码,打印一些文字

import streamlit as st
import pandas as pd
st.text("走过路过不要错过")

保存文件,此时页面右上角出现了一些选项按钮,选择总是返回,回到代码修改内容,现在页面可以自动刷新了。
Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象

接下来添加一个文件上传的组件参数type,指定接受的文件后缀名可以指定多种文件类型,所以是一个列表函数返回的是一个文件对象。我们可以直接使用 Pandas 读取数据,然后试试输出到界面上,这里有一个快捷方式,直接把变量 df写在这里,就会在界面上显示成一个表格。不过保存文件后发现页面出现报错信息。

uploaded_file = st.file_uploader('excel文件',type=['xlsx'])
df = pd.read_excel(uploaded_file)
st.dataframe(df)

Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象
streamlit每次页面更新都会执行一遍代码,我们还没有选择任何文件,所以文件上传组件的函数返回了一个None,到了 Pandas 加载数据就会报错。
Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象

这里要划重点了。 streamlit与其他框架非常不一样的地方就在于,我们写的代码就像一个描述了整个界面的文档, streamlit 每次都要从头到尾执行一次,才能知道画面上应该描绘出哪些内容。因此每当调用一个组件函数,就要注意判断空的情况。这里在上传组件函数之后,判断返回的文件对象是否有东西。这里有一个技巧,逻辑,尽可能描述空的情况下,然后跳出执行有专门的函数 stop 做这个事情,这样可以避免我们的代码出现大量的判断嵌套。

uploaded_file= st.file_uploader('excel文件',type=['xlsx'])
if uploaded_file is None:
    st.stop()

Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象

选择一个文件看看效果,可以正常显示。接着我们让 Pandas 一次性加载所有的工作表,不需要直接显示数据,而是做一个下拉列表框,让用户选择工作表名字,看看页面效果。
Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象
为了让大家更好理解其过程,我们再次分解其显示过程。第一次执行时,上传文件组件函数由于没有选择任何文件,所以返回了none,从而在下面的判断中执行了stop。因此这次执行只收集到上传文件组件的描绘,页面只显示这个组件。在页面上点击组件,选择了一个文件,页面上的上传文件组件数据有了变化,于是页面通知后台重新执行一遍代码,同时页面把上传文件组件的文件数据返回给后台,代码开始重新执行第一句代码时,函数返回了页面给的文件数据,因此函数有了返回值,不再是None。后续的创建,下拉选择框的代码也顺利被执行。本次执行结果收集到两个组件的创建信息,所以页面上创建了下拉框。接下来使用多选下拉框函数返回的列表创建页签,每个页签内创建表格即可。千万别忘了,如果没有选择任何工作表,要提前跳出执行看看,效果,很不错。

dfs=pd.read_excel(uploaded_file,None)
names = list(dfs.keys())
sheet_selected = st.multiselect('工作表',names,[])
if len(sheet_selected) == 0:
    st.stop()
tabs = st.tabs(sheet_selected)
for tab,name in zip(tabs,sheet_selected):
    with tab:
        df = dfs[name]
        st.dataframe(df)

根据streamlit的更新规则,不管页面上的任何组件有变化,整个代码都会被重新执行,那就意味着意味着 Pandas 加载数据的代码会被重复执行很多次。实际上数据文件根本没有变化,有没有什么办法可以让它只在我们重新选择其他文件的时候才执行?加载数据?方法很简单,独定义一个函数,接收文件对象,函数里面就是 Pandas 加载数据的代码,然后在函数上方打上装饰器,表明这是一个缓存函数,为了证明其缓存函数生效,我们在函数里面打印内容,到控制台。文章来源地址https://www.toymoban.com/news/detail-481599.html

@st.cache_data
def load_data(file):
    print("正在执行加载数据......")
    return pd.read_excel(file,None)
dfs=pd.read_excel(uploaded_file,None)
names = list(dfs.keys())
sheet_selected = st.multiselect('工作表',names,[])
if len(sheet_selected) == 0:
    st.stop()
tabs = st.tabs(sheet_selected)
for tab,name in zip(tabs,sheet_selected):
    with tab:
        df = dfs[name]
        st.dataframe(df)

到了这里,关于Python的界面神器Streamlit初使用,一个漂亮的界面有多简单,超乎想象的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • 【python】制作一个简单的界面,有手就行的界面~

    前言 嗨喽~大家好呀,这里是魔王呐 ❤ ~! ttkbootstrap 是一个基于 tkinter 的界面美化库, 使用这个工具可以开发出类似前端 bootstrap 风格的 tkinter 桌面程序。 ttkbootstrap 不仅有丰富的案例,同时还有完善的官方文档,可惜是英文的。 不过对于程序员来说,只要用好翻译软件与提

    2024年02月02日
    浏览(30)
  • 用HTML+CSS做一个漂亮简单的个人网页(第二篇)

    时隔三年我把之前给我妹写的毕业论文的网站页面写出来一下哈 供各位小伙伴参考参考哈 不接受批评反驳哈哈哈哈哈哈哈 都是我自己胡乱搭的图片和文字 可自行更改,按照自己的审美喜好来哈! 先看页面的图片哈 首页: 样式: 关于我页面图片 代码: 样式: 日常页面:

    2024年02月03日
    浏览(36)
  • Python 可视化 web 神器:streamlit、Gradio、dash、nicegui;低代码 Python Web 框架:PyWebIO

    官网:https://streamlit.io/ github:https://github.com/streamlit/streamlit API 参考:https://docs.streamlit.io/library/api-reference 最全 Streamlit 教程:https://juejin.cn/column/7265946243196436520 Streamlit-中文文档:https://github.com/wanghanbinpanda/Streamlit-Documentation-Chinese/blob/main/README.md 框架对比:Gradio、Streamlit 和

    2024年02月01日
    浏览(47)
  • Python-如何制作一个简单的登陆界面【记录】

    (1)打开登陆界面后,输入对应的账号和密码,自动进入到主界面程序,登陆界面消失; (2)进入主界面程序后,可以返回登陆界面,同时主界面消失; (3)达到指令要求后,可以注册账号和密码,并保存到数据库。(此功能具体实现暂时不考虑。) 登陆界面展示

    2024年02月11日
    浏览(60)
  • 使用Streamlit创建AutoGen用户界面

    AutoGen作为一个最大化LLM(如GPT-4)能力的框架而脱颖而出。由微软研究院开发的AutoGen通过提供一种自动化、优化和编排工作流的方法,简化了复杂的、基于多代理llm的应用程序的创建。我们在以前的文章中也有过介绍,你可以与许多GPT交谈,并且GPT和GPT之间也可以互相交谈。每

    2024年02月04日
    浏览(80)
  • 使用Pygame创建一个简单游戏界面

    首先需要安装Pygame 模块,在Python代码中添加引用。 1. 引用代码如下: 2. 定义初始化窗口函数: 在初始化窗口函数中,定义窗口大小和窗口标题。 3. 创建一个循环,不断更新界面和检测事件 加载背景图片,将背景图片对象放置在窗口上,位置(0,0) 最左角,图片有实际的

    2024年02月13日
    浏览(38)
  • 使用QT制作一个简单的登录-注册界面

    1、作业需求   2、实现过程 1)Widget.h文件 2)Widget.cpp文件

    2024年02月11日
    浏览(32)
  • 使用C++界面框架ImGUI开发一个简单程序

    目录 简介 使用示例 下载示例 main文件 设置ImGui风格 设置字体 主循环 添加Application类 中文编码问题 界面设计 关于imgui_demo.cpp 创建停靠空间 创建页面 隐藏窗口标签栏 创建导航页面 创建内容页面 隐藏控制台窗口 打包程序 总结 待解决问题 开发优势 附件 ImGui 是一个用于C++的

    2024年02月13日
    浏览(30)
  • Java Swing图书管理系统,界面漂亮、功能全,直接使用 窗体版本-400

    今天为大家分享一个java语言编写的图书管理程序-400,目前系统功能已经很全面,后续会进一步完善。整个系统界面漂亮,有完整得源码,希望大家可以喜欢。喜欢的帮忙点赞和关注。一起编程、一起进步 开发语言为Java,开发环境Eclipse或者IDEA都可以,数据为MySQL。运行主程

    2024年02月13日
    浏览(27)
  • Matlab中如何使用appdesigner设计工具建立一个简单的界面

    建立一个新的空白界面,matlab中输入 appdesigner ,打开app设计工具,新建一个空白界面 为了实现图像的输入和结构显示,以及功能的运转,我们首先拖入两个 图像 和三个 按钮 模块,为了美观,去除默认坐标区功能模块的x、y轴颜色和标签(在右侧检查器中更改) 布局完成后

    2024年02月05日
    浏览(29)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包