将NiceGUI应用程序打包成EXE文件

本文指导如何使用PyInstaller将基于NiceGUI的Python应用转换为可执行文件(EXE),包括安装依赖、创建应用示例和打包过程。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

将NiceGUI应用程序打包成EXE文件

NiceGUI是一个简单易用的Python库,用于创建基于文本的用户界面。在本教程中,我们将学习如何将NiceGUI应用程序打包成可执行文件(EXE)。

步骤1:安装依赖项

首先,我们需要确保在打包应用程序之前安装必要的依赖项。在命令行中运行以下命令来安装所需的库:

pip install pyinstaller

步骤2:创建NiceGUI应用程序

接下来,我们需要创建一个NiceGUI应用程序my_login.py。以下是一个简单的示例:

#!/usr/bin/env python3
"""This is just a very simple authentication example.
"""
from fastapi.responses import RedirectResponse

from nicegui import app, ui

# in reality users passwords would obviously need to be hashed
passwords = {'user1': 'pass1', 'user2': 'pass2'}


@ui.page('/')
def main_page() -> None:
    if not app.storage.user.get('authenticated', False):
        return RedirectResponse('/login')
    with ui.column().classes('absolute-center items-center'):
        ui.label(f'Hello {app.storage.user["username"]}!').classes('text-2xl')
        ui.button(on_click=lambda: (app.storage.user.clear(), ui.open('/login')), icon='logout').props('outline round')


@ui.page('/login')
def login() -> None:
    def try_login() -> None:  # local function to avoid passing username and password as arguments
        print(passwords.get(username.value))
        if passwords.get(username.value) == password.value:
            app.storage.user.update({'username': username.value, 'authenticated': True})
            ui.open('/')
        else:
            ui.notify('Wrong username or password', color='negative')

    if app.storage.user.get('authenticated', False):
        return RedirectResponse('/')
    with ui.card().classes('absolute-center'):
        username = ui.input('Username').on('keydown.enter', try_login)
        password = ui.input('Password', password=True, password_toggle_button=True).on('keydown.enter', try_login)
        ui.button('Log in', on_click=try_login)


ui.run(reload=False,native=True,storage_secret='THIS_NEEDS_TO_BE_CHANGED')

在上面的示例中,我们导入了nicegui库并创建了一个简单的NiceGUI应用程序。

在 ui.run 函数中,设置2个参数
reload = False 是打包必需
native = True ,程序启动时,就像普通的程序一样有独立的窗体。如果此参数为False,那么启动时就会触发浏览器打开页面

步骤3:打包应用程序

现在,我们可以使用PyInstaller工具将NiceGUI应用程序打包成EXE文件。然后在同目录下创建一个 build.py 文件,代码如下:

import os
import subprocess
from pathlib import Path
import nicegui
cmd = ['PyInstaller',
'my_login.py',#your main file with ui.run()
'--name','myapp',#name of your app
'--onefile',
'--windowed',
'--clean',
'--add-data',f'{Path(nicegui.__file__).parent}{os.pathsep}nicegui'
]
subprocess.call(cmd)

确保将my_login.py替换为您的NiceGUI应用程序的实际文件名。

--onefile参数将应用程序打包成单个EXE文件,而--windowed参数将应用程序显示为窗口应用程序,而不是命令行应用程序。
执行

python build.py

完成后,您将在同一目录下找到一个名为dist的文件夹,其中包含您的NiceGUI应用程序的EXE文件。
在这里插入图片描述

结论

通过遵循上述步骤,您可以轻松地将NiceGUI应用程序打包成EXE文件,以便在没有Python环境的计算机上运行。这为您的应用程序的分发和共享提供了便利。

03-29
### NiceGUI 的简介 NiceGUI 是一种基于 Python 的用户界面框架,能够轻松构建运行于 Web 浏览器中的图形化用户界面 (GUI)[^3]。它的设计目标是提供简单易用的 API 和灵活的功能组合,使得开发者无需深入掌握前端技术即可快速实现交互式应用程序。 --- ### 安装与使用教程 为了开始使用 NiceGUI,可以通过 pip 巛包管理工具进行安装: ```bash pip install nicegui ``` 安装完后,可以按照以下代码示例创建一个简单的 GUI 应用程序: ```python from nicegui import ui def greet(): name = name_input.value or 'World' ui.notify(f'Hello {name}!') with ui.card().classes('w-full max-w-300 mx-auto'): with ui.column().classes('items-center'): name_input = ui.input('Your name').props('autofocus') ui.button('Greet', on_click=greet) ui.run() ``` 上述代码展示了如何定义输入框、按钮以及通知消息等功能组件[^2]。通过 `ui.run()` 方法启动服务器后,在浏览器中访问指定地址即可查看效果。 --- ### 功能特性概述 #### 基本功能模块 1. **UI 组件**: 提供丰富的内置控件支持,例如按钮 (`ui.button`)、滑动条 (`ui.slider`)、表格 (`ui.table`) 等。 2. **事件处理机制**: 支持绑定回调函数至特定操作(如点击或拖拽),从而动态响应用户的互动行为。 3. **样式定制能力**: 利用 Tailwind CSS 实现高度自定义外观布局的可能性;同时也允许直接嵌入 HTML/CSS/JavaScript 片段扩展原生表现力。 4. **多媒体集选项**: 能够加载图片资源或者播放音频视频文件,并且兼容 Markdown 渲染语法用于富文本展示。 5. **高级视觉呈现手段**: 包含 Three.js 集接口以便制作复杂的三维模型视图,还有 Plotly 插件辅助统计图表绘制工作。 #### 场景适用范围 由于其轻量级特性和跨平台属性,特别适合应用于如下领域: - 小型独立网站建设; - 数据监控面板维护; - 教育培训演示材料准备; - 科研实验原型验证环境部署等等[^3]。 尽管官方文档存在一定程度上的混乱状况[^1],不过随着社区贡献者的增多和技术积累加深,越来越多高质量指南陆续涌现出来弥补这一缺陷。 --- ### 开发建议 针对初次接触该库的新手而言,可以从模仿现有案例起步逐步熟悉各项核心概念并不断试验调整直至熟练运用为止。同时积极参与讨论区交流心得也有助于加速长过程。 ---
评论 9
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

时尚IT男

你的鼓励将是我创作的最大动力

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

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

打赏作者

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

抵扣说明:

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

余额充值