数据STUDIO

太牛了,10 个 Python 库抢了前端的饭碗

Image

Image
我一个资深 pythoner,竟被被安排做UI设计,太难为我了,花了几个小时来设计按钮、配色方案和像素,结果太丑了~正当我沮丧时,突然想到:

为什么还要构建接口呢……当 Python 已经有库可以让后端完成几乎所有繁重的工作——比任何前端都更智能、更快、更干净?

Image

后来,我整理了一份包含 10 个 Python 库的清单,它们的功能强大,先进得令人难以置信,以至于让前端感觉像个摆设。没有多余的代码,没有 JavaScript,只有像魔法一样运行的代码。

1. Textual

看起来像原生应用的 UI 终端

Image

“谁说 CLI 一定很无聊?”

pip install textual

Textual是React终端世界的基石——我这么说可不是随便说说的。它让你只需使用 Python 就能在终端里创建出华丽、响应迅速的 UI。

没有 CSS,没有 HTML,只有 Python 类和逻辑。

from textual.app import App
from textual.widgets import Header, Footer

classMyApp(App):
defcompose(self):
yield Header()
yield Footer()

MyApp().run()
  • 基于 Rich
  • 热重载支持
  • 鼠标 + 键盘交互
  • 感觉就像使用 Tailwind 构建,但适用于你的终端

用例:仪表板、内部工具、数据浏览器——所有这些都无需离开 CLI。

2. Remi

将任何 Python 脚本转换为 Web 应用程序(无需 HTML)

Image

“运行 Python。获取 UI。”

pip install remi

Remi 让你无需编写任何 HTML 或 JS 代码即可创建基于浏览器的 GUI。只需运行你的 Python 脚本,Remi 就会启动一个带有实时 UI 的本地服务器。

import remi.gui as gui
from remi import start, App

classMyApp(App):
defmain(self):
        btn = gui.Button('Click me')
        btn.onclick.do(lambda x: btn.set_text('Clicked!'))
return btn

start(MyApp)
  • 内置 HTTP 服务器
  • 使用 Python 的原生 HTML 元素
  • 非常适合快速仪表板或内部工具

它类似于 Tkinter,但更现代……而且性感。

3. NiceGUI

使用 Python 和 Vue 构建快速、响应式 GUI(无需编写 Vue)

Image

“终于有一个不错的 Python 前端了。”

pip install nicegui

NiceGUI 是暗地里最被低估的GUI 库之一。它允许你用 Python 编写响应式、类似 Vue.js 的 UI,并在浏览器中运行它们。

from nicegui import ui

ui.label('Hello, World!')
ui.button('Click Me', on_click=lambda: ui.notify('Boom!'))

ui.run()
  • 少于 10 行的全栈应用程序
  • 内置图表、文件上传、授权
  • 在移动设备上也能完美运行
  • 非常适合快速内部仪表板

专业提示:将其与 FastAPI 配对,你可以在数小时内交付管理面板。

4. Flet

使用纯 Python 构建类似 Flutter 的 UI

Image

“它就像 Flutter,但没有 Dart 的学习曲线。”

pip install flet

Flet 仅 使用Python即可为你提供Flutter 体验 - 无需 Flutter SDK,无需 Dart,只需一个 Python 文件。

import flet as ft

defmain(page: ft.Page):
    btn = ft.ElevatedButton(text="Click me!", on_click=lambda e: print("Clicked"))
    page.add(btn)
ft.app(target=main)
  • 跨平台(Windows、macOS、Linux、Web)
  • Material UI 支持
  • 实时更新
  • 纯 Python 开发的移动应用

是的,这是真的。而且,确实非常棒。

5. Eel

Web 前端 + Python 后端 = ✨

Screenshot

“Electron 很精简,但 Python 却很好。”

pip install eel

想要使用 HTML/CSS/JS 作为 UI,但业务逻辑仍使用 Python 吗?Eel 为你在 Python 和浏览器之间搭建了双向桥梁,无需 Node.js 或 Electron 的臃肿。

import eel

eel.init('web')  # folder with your index.html

@eel.expose
defsay_hello_py(name):
    print(f'Hello from Python, {name}!')

eel.start('index.html')
  • 超轻量级
  • 非常适合用 Python 逻辑包装现有的 Web UI
  • 类似于 Flask + JS……但更简单

我用它来构建一个不依赖互联网的本地 PDF 签名器。

6. DearPyGui

你从未听说过的神级 GUI 引擎

Dear PyGui logo

“这就像使用虚幻引擎......用于 Python UI。”

pip install dearpygui

Dear PyGui速度极快,具有 GPU 加速,能够构建**性能上像 C++**但本质上是纯 Python 的本机应用程序。

import dearpygui.dearpygui as dpg

dpg.create_context()
with dpg.window(label="Demo Window"):
    dpg.add_text("Hello, world")
    dpg.add_button(label="Click Me")
dpg.create_viewport(title='Custom Title')
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
  • 即时模式 GUI(类似 ImGui)
  • GPU 渲染
  • 非常适合工具、检查器、编辑器
  • Python 中 60+ FPS 的 UI?是的。

这不仅仅是一个图书馆——它是一个弹性空间。

7. pywebview

Python 支持的原生 Windows Webview

pywebview logo

“使用 HTML + Python 构建具有原生体验的桌面应用程序。”

pip install pywebview

如果你正在构建一个看起来像原生但使用 Web 技术的桌面 GUI,pywebview 是你的最佳选择。它创建了一个轻量级的窗口,并且没有 Chromium 的臃肿(不像 Electron)。

import webview

webview.create_window('My App', 'https://your-ui-url.com')
webview.start()
  • 支持文件访问、API、JS <-> Python 调用
  • 比 Electron 轻 90%
  • 无需学习 C++ 或 Qt

对于本地应用程序来说,它也可以与 Flask、Django 或 FastAPI 完美兼容。

8. Toga

使用 Python 开发桌面和移动端的原生 UI

Image

“编写一次,随处运行(实际上)。”

ppip install toga

Toga 来自BeeWare项目,它使用****相同的 Python 代码为你提供在 macOS、Windows、Linux 甚至移动设备上的真正原生体验。

import toga
from toga.style import Pack

defsay_hello(widget):
    print("Hello!")

defbuild(app):
    btn = toga.Button("Say Hello", on_press=say_hello, style=Pack(padding=20))
return toga.Box(children=[btn])

app = toga.App("My App", "org.example.myapp", startup=build)
app.main_loop()
  • 真正的原生小部件
  • 全栈 Python 开发
  • 无需 JS,无需 Web 视图。纯粹的原生。

前端?可选。Python?必需。

9. JustPy

使用纯 Python 编写交互式 Web 应用程序

Image


Streamlit 很酷。这个更酷。

pip install justpy

JustPy 是一个高级 UI 框架,你可以在其中构建完整的响应式 Web 应用程序 -仅使用 Python。零前端代码。

import justpy as jp

def hello():
    wp = jp.WebPage()
    jp.Div(text='Hello, world!', classes='text-xl', a=wp)
return wp
jp.justpy(hello)
  • 基于 Vue.js 构建
  • 反应式数据绑定
  • 非常适合仪表板、原型、内部工具

一个 Python 文件。一个端点。无限的前端能力。

10. Gooey

立即将 CLI 应用转换为漂亮的 GUI

Image

“你知道什么比 argparse 更好吗?GUI。”

pip install Gooey

像平常一样编写脚本argparse...Gooey 会自动为其生成完整的 GUI。

from gooey import Gooey, GooeyParser

@Gooey
def main():
    parser = GooeyParser()
    parser.add_argument('name')
    args = parser.parse_args()
print(f'Hello, {args.name}')

main()
  • 零前端代码
  • 自动生成界面
  • 让你的脚本看起来更专业

我曾经把它部署到一个非开发客户端的U盘上。他们以为我从零开始开发了一个原生应用。

🏴‍☠️宝藏级🏴‍☠️ 原创公众号『数据STUDIO』内容超级硬核。公众号以Python为核心语言,垂直于数据科学领域,包括可戳👉Python|MySQL|数据分析|数据可视化|机器学习与数据挖掘|爬虫等,从入门到进阶!

长按👇关注- 数据STUDIO -设为星标,干货速递ImageImage