【Python开发 | 图文教程】NiceGUI:Web 界面的优雅之选

NiceGUI:让Python变身为Web应用开发大师的神器 NiceGUI是一个功能丰富、易于使用的Python UI框架,能够在Web浏览器中展现出各种GUI元素。NiceGUI非常适用于各种场景,包括微型Web应用程序、仪表板、机器人项目、智能家居解决方案等。注意:NiceGUI支持热加载,当您修改代码时,NiceGUI会自动重新加载页面。NiceGUI是一个易于使用的基于Python的UI框架,可以在您的Web浏览器中使用。您可以创建按钮、对话框、Markdown、3D场景、图表等等。包括标签、按钮、复选框、开关、滑块、输入框、文件上传等,满足各种常见需求。 阅读详情

【精选优质专栏推荐】


每个专栏均配有案例与图文讲解,循序渐进,适合新手与进阶学习者,欢迎订阅。

项目说明

NiceGUI 是一个基于 Python 的轻量级 UI 框架,旨在帮助开发者快速构建交互式 Web 界面。它通过浏览器呈现用户界面,支持按钮、对话框、Markdown、3D 场景、图表等多种组件,适用于微型 Web 应用、仪表板、机器人项目、智能家居解决方案等场景。

项目特点

  • 浏览器呈现
    界面直接在浏览器中显示,无需额外安装客户端。

  • 实时交互
    支持 WebSocket,实现前后端实时通信,界面无需刷新即可更新。

  • 组件丰富
    提供按钮、输入框、滑块、图表、3D 场景等多种 UI 元素。

  • 简洁代码
    使用 Python 代码即可定义界面,免去 HTML、CSS 的编写。

  • 易于部署
    支持通过 Docker、PyPI 等方式安装,部署简单。

  • 扩展性强
    支持自定义路由、数据响应、持久化存储等功能,适用于构建完整的 Web 应用。

项目地址

GitHub 仓库:

https://github.com/zauberzeug/nicegui

在这里插入图片描述

官方网站:

https://nicegui.io/

安装使用教程

安装

使用 pip 安装 NiceGUI:

python -m pip install nicegui

创建应用

删除 main.py 中的所有代码:

在这里插入图片描述

在 main.py 中编写以下代码:

from nicegui import ui

ui.label('Hello NiceGUI!')

ui.button('Click me', on_click=lambda: ui.notify('Button pressed!'))

ui.run()

在这里插入图片描述

运行应用

在命令行中运行:

python main.py

然后在浏览器中访问 http://127.0.0.1:8080/ 即可看到界面:

在这里插入图片描述

示例1

以下是一个包含滑块和数字输入框的示例,实时同步值:

from nicegui import ui

class Demo:
    def __init__(self):
        self.number = 1

demo = Demo()

ui.slider(min=1, max=5).bind_value(demo, 'number')
ui.number().bind_value(demo, 'number')
ui.toggle({1: 'A', 2: 'B', 3: 'C', 4: 'D', 5: 'E'}).bind_value(demo, 'number')

ui.run()

在这里插入图片描述

在上述示例中,滑块、数字输入框和切换按钮的值会实时同步,展示了 NiceGUI 的数据绑定功能。

在这里插入图片描述

示例2

main.py:

from nicegui import ui
from pathlib import Path

# -----------------------------
# 左侧导航菜单
# -----------------------------
menu_items = [
    {"label": "仪表盘", "callback": "show_dashboard"},
    {"label": "安全审核", "callback": "show_security_audit"},
    {"label": "设置", "callback": "show_settings"},
]

# -----------------------------
# 右侧内容区
# -----------------------------
with ui.row().style("height: 100vh;"):
    # 左侧导航栏
    with ui.column().style("width: 220px; background-color: #f0f0f0; padding: 16px;"):
        ui.label("菜单").classes("text-xl mb-4")
        buttons = {}
        for item in menu_items:
            btn = ui.button(
                item['label'],
                on_click=lambda e, cb=item['callback']: globals()[cb](),
            )
            btn.classes("w-full mb-2 text-left")
            buttons[item['label']] = btn

    # 右侧内容区
    content = ui.column().style("flex: 1; padding: 20px; overflow-y: auto;")

# -----------------------------
# 页面渲染函数
# -----------------------------
def show_dashboard():
    content.clear()
    with content:
        ui.label("仪表盘").classes("text-2xl")
        ui.markdown("欢迎来到仪表盘!这里可以显示统计数据和图表。")

def show_security_audit():
    content.clear()
    with content:
        ui.label("安全审核").classes("text-2xl mb-2")
        # 加载本地 HTML 文件
        html_path = Path("security_audit.html")  # 请放置你的 HTML 文件在项目根目录
        if html_path.exists():
            html_code = html_path.read_text(encoding="utf-8")
            ui.html(html_code)
        else:
            ui.label("未找到 security_audit.html 文件")

def show_settings():
    content.clear()
    with content:
        ui.label("设置").classes("text-2xl")
        ui.markdown("这里可以修改系统配置或管理用户权限。")

# -----------------------------
# 默认加载仪表盘
# -----------------------------
show_dashboard()

# -----------------------------
# 启动应用
# -----------------------------
ui.run()

在这里插入图片描述

开发文档与示例

可访问以下链接获取开发文档,其中存在大量演示:

https://nicegui.io/documentation

在这里插入图片描述

可访问以下链接查看更多示例:

https://github.com/zauberzeug/nicegui/tree/main/examples

在这里插入图片描述

Wiki:

https://github.com/zauberzeug/nicegui/wiki

在这里插入图片描述

依赖包内部版本不兼容解决方法

可能出现的报错:

PS D:\I\Envir\Python\WorkSpace> cd .\nicegui-main\ PS D:\I\Envir\Python\WorkSpace\nicegui-main> python3 -m pip install nicegui PS D:\I\Envir\Python\WorkSpace\nicegui-main> & D:/I/Envir/Python/python.exe d:/I/Envir/Python/WorkSpace/nicegui-main/main.py Traceback (most recent call last): File “d:\I\Envir\Python\WorkSpace\nicegui-main\main.py”, line 5, in module from fastapi import Request File “D:\I\Envir\Python\lib\site-packages\fastapi_init.py”, line 7, in module from .applications import FastAPI as FastAPI File “D:\I\Envir\Python\lib\site-packages\fastapi\applications.py”, line 16, in module from fastapi import routing File “D:\I\Envir\Python\lib\site-packages\fastapi\routing.py”, line 45, in module from fastapi.exceptions import ( ImportError: cannot import name ‘ResponsttttidationError’ from ‘fastapi.exceptions’ (D:\I\Envir\Python\lib\site-packages\fastapi\exceptions.py) PS D:\I\Envir\Python\WorkSpace\nicegui-main>

出现报错的原因是依赖包内部版本不兼容,解决方法如下:

1.卸载旧版本 FastAPI 和 Starlette

python -m pip uninstall fastapi starlette -y

在这里插入图片描述

2.安装兼容版本
根据 NiceGUI 官方推荐(截至目前),安装:

python -m pip install fastapi==0.109.1 starlette==0.27.0

在这里插入图片描述

3.确认 NiceGUI 版本

python -m pip install --upgrade nicegui

在这里插入图片描述

4.清理缓存

python -m pip cache purge

在这里插入图片描述

python做界面,强烈推荐nicegui 在网上搜索 “python 做界面” ,得到的结果无非是TkinterwxWidgetsQtGtk。它们要不然就是打包后太大,要不就是界面丑,要不就是代码繁琐。这些都是 GUI,那么 web 界面又如何?我之前推荐过 streamlit,在简单的场景下,它仍然值得推荐。但是 streamlit 实在不灵活,受限于它的核心机制,有些需求几乎无法实现。用来做简单的数据看板,还行。streamlit 中加个边框线都很复杂,无语我需要一个灵活的web框架,可以做web服务的网站,也可以打包成独立的 exe。 阅读详情

相关推荐

Python GUI开发库之nicegui使用详解

在 Python 中,创建图形用户界面(GUI)应用程序通常需要大量的代码和时间。然而,随着 Python 生态系统的不断发展,出现了一些简化 GUI 开发过程的工具和库。其中之一就是 NiceGUI 库。本文将深入探讨 NiceGUI 库的功能、用法以及如何利用它来创建漂亮而功能丰富的 GUI 应用程序。

Rocky006的博客 3991

使用终极 GUI 框架 NiceGUI 提升你的 Python 应用程序

介绍随着机器学习和深度学习网站应用程序的快速增长,开发人员一直在寻找新的 Web 框架,以便更轻松地构建这些网站应用程序。数据科学应用程序的普及程度已经上升,因此新的框架也在增加。开发人员创建了许多新的框架,这些框架被证明对构建这些网站应用程序很有帮助。其中一个框架就是NiceGUI。在本文中,我们将关注这个框架以及如何使用它构建简单的应用程序。学习目标了解 NiceGUI学习使用 NiceGUI...

深度学习与计算机视觉 1万+

NiceGUI 入门实战:简约风 Python 网页新体验

NiceGUI是一款基于Python的轻量级前端框架,允许开发者使用纯Python代码快速构建交互式网页应用。它提供丰富的UI组件库(如按钮、输入框、图表等)和响应式布局能力,支持异步操作和现代化设计。安装简单(pip install nicegui),通过简洁的API即可实现复杂功能,如事件绑定、实时数据更新和弹窗交互。框架内置FastAPI支持,适合开发工具类应用、仪表盘和管理后台。示例代码展示了核心组件使用和页面布局方案,包括顶部导航栏、侧边菜单和主内容区的典型企业系统结构,体现其高效开发特性。

superfreeman的专栏 1736

Python神器NiceGUI:手把手带你从0到精通,写GUI界面从未如此简单!

Python做GUI总得折腾PyQt、Tkinter这些庞然大物,写个简单界面都像是在搬砖。忽然,我想起了。

m0_62283350的博客 1万+

NiceGui:Python中的轻量级GUI框架初体验

NiceGui是一个基于Python的轻量级GUI框架,专注于简洁、易用和高效。它提供了丰富的组件和布局方式,帮助开发者快速构建出美观且实用的图形用户界面。相较于其他GUI框架,NiceGui具有如下特点:轻量级:NiceGui不依赖第三方库,仅使用Python标准库即可实现GUI开发,降低了项目的复杂性和依赖性。简洁易用:NiceGui的API设计简洁明了,易于上手。同时,它支持多种布局方式,可以满足不同场景下的界面需求。

这家伙很懒,什么都没有留下 4365

Arxml文件可视化:当汽车软件架构遇见交互式设计工具

本文探讨了Arxml文件在汽车电子系统开发中的可视化技术,结合AUTOSAR架构标准,介绍了如何利用现代Web技术构建交互式设计工具。通过三维组件关系图、动态数据流展示和版本对比等功能,显著提升开发效率和架构评审质量,适用于MBD和ASPICE开发流程。

weixin_29050271的博客 429

NICEGUI---ROS开发之中常用的GUI工具

对于ROS来说,如果不具备一定知识的人员来使用这些我们写的算法,如果说没有交互,这会让用户使用困难,所以我们需要使用GUI来完成友善的数据交互,传统的GUI方法一般有PYQT这类GUI方法,但是这类GUI工具上手门槛较高,也不太适合快速且敏捷的可视化界面开发。NiceGUI 是一个易于使用、基于Python的用户界面框架,它显示在Web浏览器里,可创建按钮,对话框,markdown,3D场景,绘图等。它非常适用于小型网页应用、仪表盘、机器人项目、智能家居解决方案和类似的场景。相关代码也已经全部在上开源了。

lovely_yoshino的博客 1万+

使用 pip 安装 pygame 遇到的问题

今天尝试学习使用 pygame 时,按照我的习惯一发 pip install 下去,本以为很简单的事情,没想到遇到了不少问题,顺手记录一下。 0x01. 无法找到 “SDL.h” 文件 pygame 是使用 SDL 库写就的游戏框架,自然强依赖于 SDL,我的 python@3 是使用 macOS 的 brew 管理器直接安装的,可能由于不是编译安装的问题,缺少了这个库,继续使用 brew 安...

Mitscherlich的博客 8621

NICEGUI库,一个有点新、有点酷的PYTHON UI库(二)样式的优化和查找

我期望的效果是把按钮左边(占20%左右),然后设置页面靠右。这里有个坑,可能是我学艺不精,研究了两天也做不出,各部分总是平均分,在各自的class加上"w-[20%]"也不行,因为容器是均分的,加完比例,显示的只是容器内部的20%,也就是按钮占50%的20%,右侧设置页面还是占一半,这不符合我的预期。无论我怎么设置样式,也都不能让左侧按钮例缩小比例。只好上BILI上看教学视频,NICEGUI的框架是基于一个叫quasar,我之前尝试的样式都是按照bootstrap设置的,当我看完一些文档突然就容易明白了。

weixin_44897540的博客 3544

scannet数据集下载文件

scannet数据集下载文件 由于大家会申请scannet数据集,审批比较慢,我将下载的文件里面的内容贴出来,大家可以复制放进py文件中,运行就可以下载 ps:别再私信要数据集了,这个自己下载,如果光三维数据的话,还是很快的,当然如果路由器翻了墙的话,下载会更快。 #!/usr/bin/env python # Downloads ScanNet public data release # Run with ./download-scannet.py (or python download-scannet.

weixin_40766438的博客 9234

深入解析STM32F40x CAN控制器的配置与优化

本文深入解析STM32F40x CAN控制器的配置与优化,涵盖基础工作模式、波特率计算、筛选器配置及中断管理等关键技术。通过实战案例和代码示例,帮助开发者高效配置CAN通信,提升工业控制系统的稳定性和性能。

weixin_26834815的博客 224

python web GUI框架-NiceGUI 教程(一)

streamlit可以在一些简单的场景下仍然推荐使用,但是streamlit实在不灵活,受限于它的核心机制,NiceGUI是一个灵活的web框架,可以做web网站也可以打包成独立的exe。

sinat_35773915的博客 8822

OpenCV函数用法之calibrateCamera

参考链接:opencv中标定函数calibrateCamera_ychl87的专栏-优快云博客 世界坐标系的三维点投影到成像坐标系中的二维点的投影公式如下: 其中(X,Y,Z)为世界坐标系中的三维点; (u,v)为成像面坐标系中的二维点; A为相机的内参数矩阵:(cx,cy)为主光轴点,一般为图像的中心;fx和fy为焦距; [R|t]为相机的外参数矩阵:R为旋转矩阵,t为位移矩阵; 上述公式的简单推理过程如下 考虑到镜头畸变 其中,k1,k2,k3,k4,k5和k6为径向畸变,p1和.

tiger&sheep的博客 3万+

nicegui,一个有趣的 Python 库!

NiceGUI 是一个基于 Python 的 GUI 开发库,旨在简化 GUI 应用程序的创建过程。它提供了一组易于使用的组件和工具,帮助开发人员快速构建出具有吸引力和交互性的用户界面。NiceGUI 的设计理念是尽量减少代码量,同时保持灵活性和可扩展性。NiceGUI 允许开发人员自定义应用程序的主题和样式,以满足不同用户的需求和喜好。通过简单的配置和参数设置,可以实现各种不同风格的界面设计。

涛哥聊Python 2580

【慧创近红外脑功能成像(fNIRS)】经皮耳迷走神经电刺激联用应用集锦

在这项双盲、随机、对照的试验中,将40例亚急性脑卒中患者随机分为两组:VNS组(VG)在TOT期间接受taVNS治疗,假手术组(SG)在TOT期间接受假taVNS治疗。此外,fNIRS显示,与SG相比,VG的对侧前额叶皮层和同侧感觉运动皮层的激活增加。然而,HRV组间无显著差异。结合taVNS技术,不仅能够探索taVNS对大脑功能产生的具体影响,还能通过精细调整刺激参数,进一步优化治疗效果,使之更加精准高效。这种治疗模式的创新,有望显著提升患者的治疗效果,改善其生活质量,为神经系统疾病的康复开辟新途径。

m0_75194604的博客 1143

论文阅读:ICLR 2026 Breaking and Fixing Defenses Against Control-Flow Hijacking in Multi-Agent Systems

该论文首先系统阐述了控制流劫持攻击的核心机理。此类攻击通过操纵多智能体系统的编排机制,诱导系统执行非安全操作,进而实现敏感信息窃取。攻击者将恶意指令伪装成环境错误信息,借助可信代理传递至系统编排器,利用"困惑副手"漏洞绕过传统安全防线。该论文指出,现有防御方案如LlamaFirewall所依赖的对齐检查机制存在根本性局限——安全目标与功能需求之间存在不可调和的内在冲突。该论文的核心贡献体现在攻防两个维度。

CSPhD-winston的博客 494

NICEGUI库,一个有点新、有点酷的PYTHON UI库(四)页眉页和一些美化

的文档中,我可以看到一个关于TAB卡片的图标的使用,但是上面只有home和thumb_up,还有哪些图标可以使用呢?这部分内容可以会涉及到一些html的内容,我学的也不是很深,但是class、style等等还是能看懂的,对应Quasar上的内容进行设置。我将各个模块功能的切换使用了选项卡,但是只有文字的内容有点干,想要加一些颜色、图标等等,同时还有如何设置一个好用的页眉、页脚、标题。如果在ui中直接加入页眉、页脚、标题的话,可能内容会直接写死,因此,可以单位定义一个函数来写。此外,您可以对任何图标库。

weixin_44897540的博客 3247

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

终于找到了!Ubuntu 虚拟机卡死的终极解决方案(如何解决VMware安装Ubuntu24.04桌面进不去、黑屏、虚拟机卡死、显示不全、屏幕闪烁等问题)

XiaoqiangClub的博客 1万+

NiceGUI:一个超赞的Python UI库

Python 用于UI设计的好用的库

sgzqc的专栏 3643

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

一个超级简单的Python UI库:NiceGUI

NiceGUI是一个基于Python的Web框架,它的设计理念是简洁和易用。NiceGUI不仅能帮助你快速创建Web界面,还能让你的应用看起来非常漂亮。无论你是一个新手开发者还是有经验的程序员,NiceGUI都能让你轻松上手,快速构建出色的Web应用。

pythondh1的博客 3133

win10 跳过U8环境检测的IE WebControls.rar

win10 安装u8的时候 提示IE WebControls 不通过,这个工具可以欺骗u8的检查。 跳过U8环境检测的IE WebControls。提示导入失败后,重新检测通过。

python GUI nicegui初识一(登录界面创建)

最近尝试了python的nicegui库,虽然可能也有一些不足,但个人感觉对于想要开发不过对ui设计感到很麻烦的人来说是很友好的了,毕竟nicegui可以利用TailwindCSS和Quasar进行ui开发,并且也支持自己定制自己的css样式。这里记录一下自己利用nicegui实现的一个登录的ui界面(并未实现具体功能)

zhaodongdz的博客 6886

怀旧版电脑GBC模拟器

再现原版GBC掌机的界面,电脑运行连游戏界面都一样大小,很怀旧,很真实,(英文版)强烈推荐,很小的文件,很难才找到的。

6.nicegui太酷了!用nicegui设计一个很丑的后台管理系统(一)

这个问题其实大可放心,nicegui其实是quasar+fastapi的合成体,也就是说既包含了前端展示也包含了后端处理,开发一个管理系统自然没有问题。这次系统用到的nicegui特性,大部分在前面的文章中都介绍了,像网格布局、导航栏、网页title、用户登录等等,想不起来的翻前面文章,这里不再赘述。我写的未必标准,但是为了后面方便,还是先定个基调,为了以后聊起来更方便。后期也许会改,改的目的也是为了更合理,所以整体目标还是“够用就好”!工程越来越大,只对部分代码进行说明,全部代码欢迎从仓库拉取。

weixin_42152901的博客 3508

强烈推荐一个Python库!制作Web Gui也太简单了!

之前小编用Python做GUI界面,首选就是。但是它们实现起来工作量及代码量太大,还要一步步设计调试界面排版等问题,而且界面最终呈现也不是特别美观,还有就是打包后太大等一系列问题。最近公司同事刚好有个相关界面开发需求,给我推荐了Python的新型Gui库,不仅可以做本地GUI程序,还可以同步生成一个Web Gui 服务,将Gui界面同步到浏览器上展示。它就是nicegui。NiceGui是一个简单易用的基于Python的Web-UI框架,其目的是使在Python中开发前端应用程序变得容易。

z_ipython的博客 1880

NICEGUI库,一个有点新、有点酷的PYTHON UI库(三)使用选项卡切换

的内容中,我讲到我有许多功能模块需要分开设置,所以需要分开多个页面对程序的后台进行设置。但是当程序全部启动时,切来切去的话可能会导致有些信息填写完了还要重新填,无法暂存。这样各个模块运行起来就有些麻烦。这也是我最近在设计程序的时候注意到的问题,经过思考,想到了使用选项卡切换。再使用Quasar进行美化一下,这个界面就做好了,是不是和之前的看上去效果好多了?

weixin_44897540的博客 1927

【量化】使用NiceGUI轻松展示股票行情信息(附代码)

发现一个方便写webui的库nicegui,闲来就试一试。方便数据展示,做个数据大屏。。

IT里的交易员-博客 2655
上一篇: 【Python编程实战 | 第二十五篇】数字猜谜游戏(二)
下一篇: 【项目开发】手把手教你快速搭建自托管个人财务应用
秋说
秋说 优质创作者: 编程框架、信息安全技术领域 优质创作者: 编程框架、信息安全技术领域
博客等级 码龄4年 3万+粉丝 1906原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

秋说

感谢打赏

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值