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

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

核心功能

1.简单易用的 UI 组件

提供按钮、文本框、下拉菜单、滑块、图表等常见 UI 元素

支持布局管理(水平、垂直、卡片式等)

可自定义样式和交互行为

  1. 实时交互

支持双向数据绑定

事件驱动编程模型(点击、输入变化等)

实时更新 UI 内容

  1. 数据可视化

集成 Plotly、Matplotlib 等图表库

支持实时数据图表

可展示 3D 图形和复杂数据可视化

  1. 多平台支持

可以作为 Web 应用运行

也可以打包为桌面应用(通过 PyInstaller 等工具)

支持移动设备访问

  1. 扩展性

可集成自定义 JavaScript 代码

支持与其他 Python 库(如 Pandas、NumPy)无缝协作

可扩展自定义组件

示例代码

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

复制代码
from nicegui import ui, Client

name = ui.input(label='你的名字')
button = ui.button('打招呼', on_click=lambda: result.set_text(f'你好,{name.value}!'))
result = ui.label()

# 嵌入JavaScript
def run_js():
    # Execute JavaScript code
    ui.run_javascript('alert("这是来自JavaScript的弹窗!")')

# 嵌入JavaScript
def get_window_width():
    # Execute JavaScript to get window width
    width = 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 界面,尤其在数据科学和自动化领域有很大优势。

复制代码
相关推荐
鬼手点金2 小时前
nanoGPT/nanochat 能做出 DeepSeek/Qwen 这样的大模型吗?
服务器·前端·javascript·bug·openclaw
VidDown3 小时前
24fps 转 25fps 不只是改个数字:帧率转换、PAL/NTSC 与音频补偿
python·网络协议·音视频·视频编解码·视频
蛋蛋的就会顺顺的3 小时前
hot100 p0——栈,贪心算法,动态规划
java·前端·javascript·算法·leetcode·力扣
程序员Sunday3 小时前
TypeScript 的 any、unknown、never 有什么区别?
前端·面试·typescript
朱涛的自习室3 小时前
70 美金的 Beyond Compare,我让 Gemini 4 和 DeepSeek 造个开源免费版(Day 2)
android·前端·人工智能
码艺-Alimjan4 小时前
Tauri 源码备份 · 打包 & 解压 总结,源码收集之路
前端·javascript·vue.js
小马不起床4 小时前
零基础玩转 FastAPI_11:前端后台管理页面
前端·状态模式·fastapi
死磕音视频4 小时前
让小模型做选择题:限定候选项并读取 logits 概率的入门实践(附 Python 代码)
开发语言·python·大模型·文本分类·transformers
凤山老林5 小时前
Spring Boot 接入国密 SM2/SM3/SM4 的一些实践记录
spring boot·后端·python
子非鱼a5 小时前
【文件上传】一个普普通通的edu16
前端