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 界面,尤其在數據科學和自動化領域有很大優勢。