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

NiceGUI 是一个基于 Python 的现代 Web 应用框架

NiceGUI 是一个基于 Python 的现代 Web 应用框架,它允许开发者直接使用 Python 构建交互式 Web 界面,而无需编写前端代码。以下是 NiceGUI 的主要功能和特点:

核心功能

1.简单易用的 UI 组件
提供按钮、文本框、下拉菜单、滑块、图表等常见 UI 元素
支持布局管理(水平、垂直、卡片式等)
可自定义样式和交互行为
2. 实时交互
支持双向数据绑定
事件驱动编程模型(点击、输入变化等)
实时更新 UI 内容
3. 数据可视化
集成 Plotly、Matplotlib 等图表库
支持实时数据图表
可展示 3D 图形和复杂数据可视化
4. 多平台支持
可以作为 Web 应用运行
也可以打包为桌面应用(通过 PyInstaller 等工具)
支持移动设备访问
5. 扩展性
可集成自定义 JavaScript 代码
支持与其他 Python 库(如 Pandas、NumPy)无缝协作
可扩展自定义组件

示例代码

下面是一个简单的 NiceGUI 应用示例,展示了基本的 UI 组件和交互功能: UI组件可输出Markdown、HTML、可运行script脚本

from nicegui import ui, Clientname = ui.input(label='你的名字')
button = ui.button('打招呼', on_click=lambda: result.set_text(f'你好,{name.value}!'))
result = ui.label()# 嵌入JavaScript
def run_js():# Execute JavaScript codeui.run_javascript('alert("这是来自JavaScript的弹窗!")')# 嵌入JavaScript
def get_window_width():# Execute JavaScript to get window widthwidth = ui.run_javascript('return window.innerWidth')ui.notify(f'窗口宽度: {width}px')
with ui.row():ui.button('运行JS', on_click=run_js)ui.button('获取窗口宽度', on_click=get_window_width)# 嵌入HTML内容
html_content = """
<div style="background-color:#f0f0f0; padding:10px; border-radius:5px;"><h3>HTML内容展示</h3><p>这是一段嵌入的<strong>HTML</strong>代码</p><button onclick="alert('HTML按钮被点击!')",color="blue">HTML按钮</button>
</div>
"""ui.html(html_content)# 嵌入Markdown内容
markdown_content = """
# Markdown示例这是一个展示**Markdown**功能的示例:1. 列表项1
2. 列表项2
3. 列表项3> 这是一段引用[NiceGUI官网](https://nicegui.io)代码示例:
```python
def hello_world():print("Hello from Markdown!")- **aaa**
- **bbb**
- **ccc**表格1:
|姓名  |  年龄    |城市|
|---|---|---|
|张三|    25     |  北京|
|李四    |30      | 上海|表格2:
| 姓名 | 年龄 | 职业 |
| --- | --- | --- |
| 张三 | 28 | 工程师 |
| 李四 | 32 | 设计师 |
| 王五 | 45 | 产品经理 |"""
ui.markdown(markdown_content)ui.html('<p>-------控件绑定属性-----------</p>') # 绑定属性class Demo:def __init__(self):self.number = 1
demo = Demo()v = ui.checkbox('visible', value=True)
with ui.column().bind_visibility_from(v, 'value'):ui.slider(min=1, max=3).bind_value(demo, 'number')ui.toggle({1: 'A', 2: 'B', 3: 'C'}).bind_value(demo, 'number')ui.number().bind_value(demo, 'number')ui.run()

应用场景

  • 数据仪表板:实时显示和分析数据
  • 交互式工具:构建科学计算、工程或数据分析工具
  • 快速原型开发:无需前端知识即可快速构建 Web 应用原型
  • 桌面应用替代方案:使用 Web 技术构建跨平台桌面应用

NiceGUI 特别适合 Python 开发者快速构建功能丰富的 Web 界面,尤其在数据科学和自动化领域有很大优势。


http://www.lryc.cn/news/2401144.html

相关文章:

  • 生动形象理解CNN
  • python入门(1)
  • 【PDF提取表格】如何提取发票内容文字并导出到Excel表格,并将发票用发票号改名,基于pdf电子发票的应用实现
  • Hugging Face 最新开源 SmolVLA 小模型入门教程(一)
  • 封闭内网安装配置VSCode Anconda3 并配置 PyQt5开发
  • 大话软工笔记—组合要素2之逻辑
  • 浅谈边缘计算
  • 宝塔专属清理区域,宝塔清理MySQL日志(高效释放空间)
  • 7.Demo Js执行同步任务,微任务,宏任务的顺序(3)
  • 边缘计算网关赋能沸石转轮运行故障智能诊断的配置实例
  • 机器学习之深入理解机器学习常见算法:原理、公式与应用
  • Python实例题: Python 的简单电影信息
  • MyBatis 的动态 SQL
  • Redis中的setIfAbsent方法和execute
  • 高考数学易错考点02 | 临阵磨枪
  • 国产高性能pSRAM选型指南:CSS6404LS-LI 64Mb QSPI伪静态存储器
  • Go 中 `json.NewEncoder/Decoder` 与 `json.Marshal/Unmarshal` 的区别与实践
  • UE5 2D角色PaperZD插件动画状态机学习笔记
  • Ubuntu 16.04 密码找回
  • 【论文阅读】DanceGRPO: Unleashing GRPO on Visual Generation
  • CentOS在vmware局域网内搭建DHCP服务器【踩坑记录】
  • AI炼丹日志-28 - Audiblez 将你的电子书epub转换为音频mp3 做有声书
  • 图像处理篇---face_recognition库实现人脸检测
  • 74. 搜索二维矩阵 (力扣)
  • 8088单板机C语言sprintf()格式化串口输出---Prj04
  • 板凳-------Mysql cookbook学习 (九)
  • 深入解析 Flask 命令行工具与 flask run命令的使用
  • 第6篇:中间件 SQL 重写与语义分析引擎实现原理
  • 基于SpringBoot的“嗨玩旅游”网站设计与实现(源码+定制+开发)嗨玩旅游平台开发:景点展示与个性化推荐系统(SpringBoot)
  • python版若依框架开发:python版若依部署