太牛了,十個 Python 庫搶了前端的飯碗
我一個資深 pythoner,竟被被安排做UI設(shè)計,太難為我了,花了幾個小時來設(shè)計按鈕、配色方案和像素,結(jié)果太丑了~正當(dāng)我沮喪時,突然想到:
為什么還要構(gòu)建接口呢……當(dāng) Python 已經(jīng)有庫可以讓后端完成幾乎所有繁重的工作——比任何前端都更智能、更快、更干凈?
后來,我整理了一份包含 10 個 Python 庫的清單,它們的功能強(qiáng)大,先進(jìn)得令人難以置信,以至于讓前端感覺像個擺設(shè)。沒有多余的代碼,沒有 JavaScript,只有像魔法一樣運(yùn)行的代碼。
1. Textual
看起來像原生應(yīng)用的 UI 終端
圖片
“誰說 CLI 一定很無聊?”
pip install textualTextual是React終端世界的基石——我這么說可不是隨便說說的。它讓你只需使用 Python 就能在終端里創(chuàng)建出華麗、響應(yīng)迅速的 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
 - 熱重載支持
 - 鼠標(biāo) + 鍵盤交互
 - 感覺就像使用 Tailwind 構(gòu)建,但適用于你的終端
 
用例:儀表板、內(nèi)部工具、數(shù)據(jù)瀏覽器——所有這些都無需離開 CLI。
2. Remi
將任何 Python 腳本轉(zhuǎn)換為 Web 應(yīng)用程序(無需 HTML)
圖片
“運(yùn)行 Python。獲取 UI?!?/p>
pip install remiRemi 讓你無需編寫任何 HTML 或 JS 代碼即可創(chuàng)建基于瀏覽器的 GUI。只需運(yùn)行你的 Python 腳本,Remi 就會啟動一個帶有實時 UI 的本地服務(wù)器。
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)- 內(nèi)置 HTTP 服務(wù)器
 - 使用 Python 的原生 HTML 元素
 - 非常適合快速儀表板或內(nèi)部工具
 
它類似于 Tkinter,但更現(xiàn)代……而且性感。
3. NiceGUI
使用 Python 和 Vue 構(gòu)建快速、響應(yīng)式 GUI(無需編寫 Vue)
圖片
“終于有一個不錯的 Python 前端了?!?/p>
pip install niceguiNiceGUI 是暗地里最被低估的GUI 庫之一。它允許你用 Python 編寫響應(yīng)式、類似 Vue.js 的 UI,并在瀏覽器中運(yùn)行它們。
from nicegui import ui
ui.label('Hello, World!')
ui.button('Click Me', on_click=lambda: ui.notify('Boom!'))
ui.run()- 少于 10 行的全棧應(yīng)用程序
 - 內(nèi)置圖表、文件上傳、授權(quán)
 - 在移動設(shè)備上也能完美運(yùn)行
 - 非常適合快速內(nèi)部儀表板
 
專業(yè)提示:將其與 FastAPI 配對,你可以在數(shù)小時內(nèi)交付管理面板。
4. Flet
使用純 Python 構(gòu)建類似 Flutter 的 UI
圖片
“它就像 Flutter,但沒有 Dart 的學(xué)習(xí)曲線?!?/p>
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 開發(fā)的移動應(yīng)用
 
是的,這是真的。而且,確實非常棒。
5. Eel
Web 前端 + Python 后端 = ?
Screenshot
“Electron 很精簡,但 Python 卻很好。”
pip install eel想要使用 HTML/CSS/JS 作為 UI,但業(yè)務(wù)邏輯仍使用 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 邏輯包裝現(xiàn)有的 Web UI
 - 類似于 Flask + JS……但更簡單
 
我用它來構(gòu)建一個不依賴互聯(lián)網(wǎng)的本地 PDF 簽名器。
6. DearPyGui
你從未聽說過的神級 GUI 引擎
Dear PyGui logo
“這就像使用虛幻引擎......用于 Python UI?!?/p>
pip install dearpyguiDear PyGui速度極快,具有 GPU 加速,能夠構(gòu)建**性能上像 C++**但本質(zhì)上是純 Python 的本機(jī)應(yīng)用程序。
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 構(gòu)建具有原生體驗的桌面應(yīng)用程序?!?/p>
pip install pywebview如果你正在構(gòu)建一個看起來像原生但使用 Web 技術(shù)的桌面 GUI,pywebview 是你的最佳選擇。它創(chuàng)建了一個輕量級的窗口,并且沒有 Chromium 的臃腫(不像 Electron)。
import webview
webview.create_window('My App', 'https://your-ui-url.com')
webview.start()- 支持文件訪問、API、JS <-> Python 調(diào)用
 - 比 Electron 輕 90%
 - 無需學(xué)習(xí) C++ 或 Qt
 
對于本地應(yīng)用程序來說,它也可以與 Flask、Django 或 FastAPI 完美兼容。
8. Toga
使用 Python 開發(fā)桌面和移動端的原生 UI
圖片
“編寫一次,隨處運(yùn)行(實際上)。”
ppip install togaToga 來自BeeWare項目,它使用****相同的 Python 代碼為你提供在 macOS、Windows、Linux 甚至移動設(shè)備上的真正原生體驗。
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 開發(fā)
 - 無需 JS,無需 Web 視圖。純粹的原生。
 
前端?可選。Python?必需。
9. JustPy
使用純 Python 編寫交互式 Web 應(yīng)用程序
圖片
Streamlit 很酷。這個更酷。
pip install justpyJustPy 是一個高級 UI 框架,你可以在其中構(gòu)建完整的響應(yīng)式 Web 應(yīng)用程序 -僅使用 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 構(gòu)建
 - 反應(yīng)式數(shù)據(jù)綁定
 - 非常適合儀表板、原型、內(nèi)部工具
 
一個 Python 文件。一個端點。無限的前端能力。
10. Gooey
立即將 CLI 應(yīng)用轉(zhuǎn)換為漂亮的 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()- 零前端代碼
 - 自動生成界面
 - 讓你的腳本看起來更專業(yè)
 
我曾經(jīng)把它部署到一個非開發(fā)客戶端的U盤上。他們以為我從零開始開發(fā)了一個原生應(yīng)用。















 
 
 



















 
 
 
 