NiceGUI:一个超赞的Python UI库

1. 引言

NiceGUI是一个基于Python的简单用户界面框架,可与浏览器或桌面应用程序流畅运行。无论你是制作小型网络应用程序、还是玩机器人项目,NiceGUI 都能以其简单的界面和众多的功能满足你的需求。这篇文章的目的是通过向大家展示如何构建和部署NiceGUI 应用程序,并列举该库的优缺点。

闲话少说,我们直接开始吧!

2. 安装

首先,让我们通过pip工具来安装该库,如下:

 pip install nicegui[highcharts]

安装过程如下:

在这里插入图片描述

3. 举个栗子

首先,让我们从官方文档中的一个例子开始,代码如下:

# https://nicegui.io/documentation/section_data_elements
from nicegui import ui 
from random import random

chart = ui.highchart({
    'title': False,
    'chart': {'type': 'bar'},
    'xAxis': {'categories': ['A', 'B']},
    'series': [
        {'name': 'Alpha', 'data': [0.1, 0.2]},
        {'name': 'Beta', 'data': [0.3, 0.4]},
    ],
}).classes('w-full h-64')

def update():
    chart.options['series'][0]['data'][0] = random()
    chart.update()

ui.button('Update', on_click=update)
ui.run()

运行后结果如下:
在这里插入图片描述
在上述代码中,niceui模块允许大家创建一个UI元素。 在这个例子中,我们首先创建了一个 highchart 元素,然后为其设置了 w-full h-64。其中,w-full 将使它以响应的方式水平占据整个屏幕,而 h-64 则指定了垂直方向上的高度。当我们点击UPDATE按钮时,会触发一个回调函数。该回调函数将更新用于生成图表的数据,然后以流畅的方式重新画图呈现。

4. 扩展显示数据

观察上图,我们还可以通过更改update回调函数用以添加新的显示条形图,代码如下:

def update():
    char_list = ["C","D","T","P","G","F"]
    chart.options["xAxis"]["categories"].append(random.choice(char_list))
    for series in chart.options['series']:
        series["data"].append(random.random())
    chart.update()

运行后,结果如下:
在这里插入图片描述
上述代码,每次点击UPDATE按钮后,会触发新增一行数据,并重新显示画图。请注意此时刷新页面并不会造成数据丢失!其他 Python UI 库无法做到这一点。这里之所以会这样,是因为数据是在所有用户之间共享的。

5. 实现计算器

计算器示例有两个可输入数字的空格、一个可以选择需要执行的操作(加、减、乘或除)的下拉菜单和一个点击执行计算的按钮。点击按钮后,计算结果将显示在屏幕上的标签中。

from nicegui import ui

def calculate():
    num1 = float(ui.input_number1.value)
    num2 = float(ui.input_number2.value)
    operation = ui.select.value
    if operation == 'add':
        result = num1 + num2
    elif operation == 'subtract':
        result = num1 - num2
    elif operation == 'multiply':
        result = num1 * num2
    elif operation == 'divide':
        result = num1 / num2
    else:
        result = 'Invalid operation'
    ui.label(f'Result: {result}')

ui.label('Number 1:')
ui.input_number1 = ui.number_input()
ui.label('Number 2:')
ui.input_number2 = ui.number_input()

ui.label('Operation:')
ui.select = ui.select(options=['add', 'subtract', 'multiply', 'divide'])
ui.button('Calculate', on_click=calculate)
ui.run()

我们首先来解释上述代码:

  • 我们先从NiceGUI 库中导入 ui 对象。
  • 接着我们创建了一个名为 calculate 的函数,点击 "Calculate "按钮时将触发调用该函数。
  • 该函数从两个输入框和下拉菜单中获取数值,执行选定的数学运算,并将结果显示在标签中。
  • 接下来,我们创建构成用户UI组件:两个用于输入数字的标签和输入框,一个用于选择操作的标签和下拉菜单,以及一个用于触发计算的按钮。
  • 此外,我们还指定在点击按钮时需要调用的计算函数。
  • 最后,我们使用命令 ui.run()来启动应用程序并在屏幕上显示用户界面。

运行上述代码后,结果如下:
在这里插入图片描述

6. 总结

NiceGUI 是一款强大而易用的Python工具,用于制作网页界面。其简单的设计、交互式功能以及与其他工具协同工作的能力使其适用于多种不同类型的项目。

如果你刚刚开始开发自己的网络应用程序,或是一名经验丰富的开发人员,正在寻找一种更有效的方法来创建UI界面,那么 NiceGUI 是一个值得考虑的选择。

您学废了嘛?

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:/a/581242.html

如若内容造成侵权/违法违规/事实不符,请联系我们进行投诉反馈qq邮箱809451989@qq.com,一经查实,立即删除!

相关文章

如何选择适合自己需求的DC电源模块?

BOSHIDA 如何选择适合自己需求的DC电源模块? 在选择适合自己需求的DC电源模块时,需要考虑一些关键因素,以确保选择的模块能够满足电源要求并具有良好的性能。下面是一些值得考虑的因素: 1. 电压输出范围:首先&#xf…

短视频素材从哪里获取?推荐8个短视频素材高清网站

在这个视觉内容至关重要的数字化时代,高质量的视频素材是任何成功视频项目的核心。无论是加强品牌宣传、提升社交媒体互动还是制作引人注目的广告,这些精选的全球视频素材网站都将为你的创意注入活力,帮助你在激烈的市场竞争中脱颖而出。 1.…

2024LarkXR新增功能系列之六 | ⽀持8K分辨率

Paraverse平行云企业级实时云渲染解决方案LarkXR是平行云自主研发的CloudXR解决方案,在业界实现了创新突破。通过分钟级部署大规模云端资源、高度适配XR所有主流引擎、以及灵活支持不同交互和沉浸方式的内容形式,LarkXR解决了Cloud XR商业化过程中所面临…

Linux之进程间通信(二)

system V system V共享内存是内核中专门设计的通信的方式, 粗粒度划分操作系统分为进程管理, 内存管理, 文件系统, 驱动管理.., 粒度更细地分还有 进程间通信模块. 对于操作系统, 通信的场景有很多, 有以传送数据, 快速传送数据, 传送特定数据块, 进程间协同与控制以目的, 它…

SystemUI GlobalActions plugin解析

com.android.systemui.action.PLUGIN_GLOBAL_ACTIONS 系统的默认实现为GlobalActionsImpl: 是谁发送了showShutdownUi指令? GlobalActionsImpl 是通过inject的方式创建的 GlobalActionsComponent是一个system UI services,配置在config.xml中&#xff…

Docker容器:网络模式与资源控制

目录 一、Docker 网络模式 1、Docker 网络实现原理 2、Docker 网络模式概述 2.1 Host 模式 2.2 Container 模式 2.3 None 模式 2.4 Bridge 模式 2.5 自定义网络(user-defined network) 3、配置 docker 网络模式 3.1 查看网络基础命令 3.1.1 查…

“怡宝”冲刺港股,饮用水基本盘稳如磐石

最近,饮用水市场异常热闹。 先是“怡宝”所属的华润饮料正式向港交所提交上市申请。随即,多名农夫山泉员工在朋友圈发文“推出绿瓶纯净水”,撞脸怡宝经典包装。“怡宝”遭遇奇袭的背后,是双方持续“交锋”的多年,随着…

Vue从入门到精通-01-Vue的介绍和vue-cli

MVVM模式 Model:负责数据存储 View:负责页面展示 View Model:负责业务逻辑处理(比如Ajax请求等),对数据进行加工后交给视图展示 关于框架 为什么要学习流行框架 1、企业为了提高开发效率:…

【Harmony3.1/4.0】笔记三-计算器

概念 网格布局是由“行”和“列”分割的单元格所组成,通过指定“项目”所在的单元格做出各种各样的布局。网格布局具有较强的页面均分能力,子组件占比控制能力,是一种重要自适应布局,其使用场景有九宫格图片展示、日历、计算器等…

python-pytorch 如何使用python库Netron查看模型结构(以pytorch官网模型为例)0.9.2

Netron查看模型结构 参照模型安装Netron写netron代码运行查看结果需要关注的地方 2024年4月27日14:32:30----0.9.2 参照模型 以pytorch官网的tutorial为观察对象,链接是https://pytorch.org/tutorials/intermediate/char_rnn_classification_tutorial.html 模型代…

基于Springboot的新生宿舍管理系统

基于SpringbootVue的新生宿舍管理系统的设计与实现 开发语言:Java数据库:MySQL技术:SpringbootMybatis工具:IDEA、Maven、Navicat 系统展示 用户登录 首页 公告信息管理 院系管理 班级管理 学生管理 宿舍信息管理 宿舍安排管理…

清华军团推出中国首个对标Sora的视频大模型Vidu,扒一扒它背后的模型架构

就在前天,Vidu 在 2024 中关村论坛年会之中横空出世。 伴随着“中国首个”,“Sora 级视频模型”,“模拟真实的物理世界”等关键词下的刷屏式的报道,Vidu 一下成为国产视频模型的一剂强心针。 尽管目前 Vidu 支持的视频长度是 16 …

二叉树理论和题目

二叉树的种类 在我们解题过程中二叉树有两种主要的形:满二叉树和完全二叉树。 满二叉树 满二叉树:如果一棵二叉树只有度为0的结点和度为 2 的结点,并且度为 0 的结点在同一层上,则这棵二叉树为满二叉树。 这棵二叉树为满二叉树…

vscode的终端区乱码怎么办呢?

vscode的终端区乱码怎么办呢? 错误效果解决办法一解决办法二(极力推荐方法二)最终效果参考文献 错误效果 解决办法一 解释:你之所以使用了utf8还乱码,是因为你的电脑目前根本无法兼容utf8,只兼容gbk 怎么让你的电脑兼容utf8,我写在方法二 在设置中,输入encoding 解决办法二(极…

水稻病害检测(YOLO数据集,多分类,稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫)

是自己利用LabelImg工具进行手工标注,数据集制作不易,请尊重版权(稻瘟病、纹枯病、褐斑病、枯心病、霜霉病、水稻细菌性条纹斑病、稻苞虫) 如果需要yolv8检测模型和数据集放在一起的压缩包,可以关注:最新最…

求解约瑟夫问题

思路: 我们要创建两个指针 有一个指针pcur指向头结点,该pcur作为报数的指针,还有一个指针ptail指向尾结点,作为记录pcur的地址 每报数为m时,pcur指向下一个元素的地址,ptail销毁报数为m的地址&#xff0…

分光光度法基本原理与应用

本文介绍分光光度法基本原理与应用。 分光光度法是分光光度计采用的方法,在医疗检测仪器,实验室测量仪器中经常使用。本文简要分析其原理,并给出实际工作过程中如何应用及应用过程中可能的误差来源。 1.基本概念 设一平行单色光垂直照射某…

网络安全工程师必备的6个渗透测试工具

渗透测试是模拟黑客攻击,评估系统安全性的重要方法。 网络安全工程师需要掌握各种渗透测试工具,才能有效地发现和修复漏洞。 1. Nmap 功能: 强大的网络扫描器,可以扫描网络拓扑、识别主机和服务、发现开放端口和漏洞。 用途: 信息收集、漏洞…

一加Ace3/12/Ace2pro手机ColorOS14刷KernelSU内核ROOT-解决无限重启变砖

一加Ace3/一加12/一加11等手机升级了安卓14底层,并且ColorOS版本也更新到了14版本界面和功能都比之前的系统表现更加优秀,但刷机方面,相对之前存在一些差异,特别是KernelSU内核级别root权限,不再支持一键刷入KernelSU通…

MySQL的事务,函数和索引

事务 数据库的事务是一种机制,一种操作序列,包含了一组数据库的操作命令 简单了解:如果一个包含多个步骤的业务操作,被业务管理,要么这些操作同时操作成功,要么同时操作失败 事务是一个不可分割的工作逻…