大家好,我是何三,80后老猿,独立开发者

在 Python 开发的广阔世界里,构建用户界面一直是一个重要的需求。从传统的桌面应用到如今流行的 Web 应用,Python 开发者们一直在寻找简洁、高效的 UI 框架。今天,我们就来介绍一款名为 NiceGUI 的 Python 库,它可以让你轻松地在网页浏览器中创建交互式的图形用户界面。

什么是 NiceGUI

NiceGUI 是一个易于使用的、基于 Python 的 UI 框架,它的独特之处在于将界面展示在网页浏览器中。借助 NiceGUI,你可以创建各种元素,如按钮、对话框、Markdown 文本、3D 场景、图表等等。它适用于多种场景,包括微型 Web 应用、仪表盘、机器人项目、智能家居解决方案以及机器学习算法的调试等。

安装 NiceGUI

在开始使用 NiceGUI 之前,我们需要先安装它。可以使用以下命令进行安装:

bash
python3 -m pip install nicegui

简单示例:Hello, NiceGUI!

让我们从一个简单的示例开始,创建一个包含标签和按钮的界面:

python
from nicegui import ui

ui.label('Hello NiceGUI!')
ui.button('BUTTON', on_click=lambda: ui.notify('button was pressed'))

ui.run()

将上述代码保存为 main.py,然后在终端中运行:

bash
python3 main.py

运行后,你会看到一个浏览器窗口打开,显示出一个标签和一个按钮。点击按钮,会弹出一个通知提示。

常见 UI 元素的使用

1. 按钮(Button)

按钮是最常见的 UI 元素之一,下面的示例展示了如何创建一个按钮并处理点击事件:

python
from nicegui import ui

def show_notification():
    ui.notify('You clicked the button!')

ui.button('Click me!', on_click=show_notification)

ui.run()

2. 输入框(Input)

输入框允许用户输入文本,我们可以监听输入框的变化事件:

python
from nicegui import ui

def handle_input_change(e):
    result.set_text('you typed: ' + e.value)

ui.input(label='Text', placeholder='start typing', on_change=handle_input_change,
         validation={'Input too long': lambda value: len(value) < 20})
result = ui.label()

ui.run()

3. 复选框(Checkbox)和开关(Switch)

复选框和开关用于让用户进行选择,以下是它们的使用示例:

python
from nicegui import ui
from nicegui.events import ValueChangeEventArguments

def show(event: ValueChangeEventArguments):
    name = type(event.sender).__name__
    ui.notify(f'{name}: {event.value}')

with ui.row():
    ui.checkbox('Checkbox', on_change=show)
    ui.switch('Switch', on_change=show)

ui.run()

4. 下拉选择框(Select)

下拉选择框提供了多个选项供用户选择:

python
from nicegui import ui
from nicegui.events import ValueChangeEventArguments

def show(event: ValueChangeEventArguments):
    ui.notify(f'Selected: {event.value}')

ui.select(['One', 'Two', 'Three'], value='One', on_change=show)

ui.run()

布局管理

NiceGUI 提供了多种布局方式,如行布局(ui.row)和列布局(ui.column),可以帮助你更好地组织界面元素。

python
from nicegui import ui

with ui.column():
    ui.label('This is a column layout.')
    with ui.row():
        ui.label('Inside a row.')
        ui.button('Button in row')

ui.run()

高级元素:3D 场景(Scene)

NiceGUI 还支持创建 3D 场景,下面的示例展示了如何创建一个包含球体、圆柱体等 3D 对象的场景:

python
from nicegui import ui

with ui.scene().classes('w-full h-64') as scene:
    scene.axes_helper()
    scene.sphere().material('#4488ff').move(2, 2)
    scene.cylinder(1, 0.5, 2, 20).material('#ff8800', opacity=0.5).move(-2, 1)

ui.run()

最后

通过以上的示例,我们可以看到 NiceGUI 是一个功能强大且易于使用的 Python UI 框架。它提供了丰富的 UI 元素和布局方式,能够满足不同场景下的界面开发需求。无论是初学者还是有经验的开发者,都可以利用 NiceGUI 快速创建出美观、交互性强的 Web 界面。

如果你对 NiceGUI 感兴趣,可以访问其 官方文档:ttps://nicegui.io/documentation 获取更多信息和示例代码。