太牛了,十個 Python 庫搶了前端的飯碗
我一個資深 pythoner,竟被被安排做UI設計,太難為我了,花了幾個小時來設計按鈕、配色方案和像素,結果太丑了~正當我沮喪時,突然想到:
為什么還要構建接口呢……當 Python 已經有庫可以讓后端完成幾乎所有繁重的工作——比任何前端都更智能、更快、更干凈?
后來,我整理了一份包含 10 個 Python 庫的清單,它們的功能強大,先進得令人難以置信,以至于讓前端感覺像個擺設。沒有多余的代碼,沒有 JavaScript,只有像魔法一樣運行的代碼。
1. Textual
看起來像原生應用的 UI 終端
圖片
“誰說 CLI 一定很無聊?”
pip install textualTextual是React終端世界的基石——我這么說可不是隨便說說的。它讓你只需使用 Python 就能在終端里創建出華麗、響應迅速的 UI。
沒有 CSS,沒有 HTML,只有 Python 類和邏輯。
from textual.app import App
from textual.widgets import Header, Footer
class MyApp(App):
def compose(self):
yield Header()
yield Footer()
MyApp().run()- 基于 Rich
- 熱重載支持
- 鼠標 + 鍵盤交互
- 感覺就像使用 Tailwind 構建,但適用于你的終端
用例:儀表板、內部工具、數據瀏覽器——所有這些都無需離開 CLI。
2. Remi
將任何 Python 腳本轉換為 Web 應用程序(無需 HTML)
圖片
“運行 Python。獲取 UI。”
pip install remiRemi 讓你無需編寫任何 HTML 或 JS 代碼即可創建基于瀏覽器的 GUI。只需運行你的 Python 腳本,Remi 就會啟動一個帶有實時 UI 的本地服務器。
import remi.gui as gui
from remi import start, App
class MyApp(App):
def main(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)
圖片
“終于有一個不錯的 Python 前端了。”
pip install niceguiNiceGUI 是暗地里最被低估的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
圖片
“它就像 Flutter,但沒有 Dart 的學習曲線。”
pip install fletFlet 僅 使用Python即可為你提供Flutter 體驗 - 無需 Flutter SDK,無需 Dart,只需一個 Python 文件。
import flet as ft
def main(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
def say_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 dearpyguiDear 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
圖片
“編寫一次,隨處運行(實際上)。”
ppip install togaToga 來自BeeWare項目,它使用****相同的 Python 代碼為你提供在 macOS、Windows、Linux 甚至移動設備上的真正原生體驗。
import toga
from toga.style import Pack
def say_hello(widget):
print("Hello!")
def build(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 應用程序
圖片
Streamlit 很酷。這個更酷。
pip install justpyJustPy 是一個高級 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
圖片
“你知道什么比 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盤上。他們以為我從零開始開發了一個原生應用。





































