Python桌面應(yīng)用GUI庫選型之Tkinter、Qt、Kivy、Flet等怎么選詳解
很多 Python 小伙伴學(xué)完基礎(chǔ)語法之后,都會遇到一個很現(xiàn)實(shí)的問題:
我想把腳本做成一個能點(diǎn)按鈕、填表單、選擇文件、展示結(jié)果的桌面軟件,到底該選哪個 GUI 庫?
Python 能做桌面應(yīng)用,但它的 GUI 生態(tài)不像 Web 那樣有一個絕對統(tǒng)一的答案。不同庫的設(shè)計(jì)目標(biāo)差別很大:
- 有的適合做簡單工具。
- 有的適合做企業(yè)級復(fù)雜軟件。
- 有的適合移動端和觸控界面。
- 有的適合數(shù)據(jù)監(jiān)控、實(shí)時繪圖、調(diào)試工具。
- 有的適合把 HTML/CSS/JavaScript 前端包進(jìn)桌面窗口。
這篇文章不追求把每個庫講到很深,而是給大家一個“選型界面”:先快速判斷自己適合哪條路線,再給每個主流方案一個最小可運(yùn)行案例。
本文基于 2026-04-22 可訪問的官方文檔整理。GUI 庫發(fā)展很快,正式項(xiàng)目落地前建議再核對一次版本、許可和打包方案。
一、先給結(jié)論:怎么選
| 場景 | 優(yōu)先考慮 | 適合人群 | 簡單評價 |
|---|---|---|---|
| 只想快速做一個小工具 | Tkinter | Python 初學(xué)者、內(nèi)部腳本工具 | 標(biāo)準(zhǔn)庫自帶,安裝成本最低 |
| 想做成熟、復(fù)雜、商業(yè)化桌面軟件 | PySide6 / PyQt6 | 中高級開發(fā)者、企業(yè)工具開發(fā) | 功能強(qiáng),生態(tài)大,學(xué)習(xí)曲線也高 |
| 想要系統(tǒng)原生風(fēng)格窗口 | wxPython | 傳統(tǒng)桌面軟件開發(fā)者 | 跨平臺且偏原生體驗(yàn) |
| 想同時考慮桌面和移動端 | Kivy | 觸控應(yīng)用、跨端原型 | UI 風(fēng)格自成體系,適合自定義界面 |
| 想用 Python 寫 Flutter 風(fēng)格應(yīng)用 | Flet | 想快速做現(xiàn)代跨端界面的開發(fā)者 | Python 調(diào)用 Flutter 體系,上手快 |
| 做實(shí)時工具、監(jiān)控面板、調(diào)試器 | Dear PyGui | 工具鏈、圖形調(diào)試、實(shí)時數(shù)據(jù)展示 | GPU 加速,控件和繪圖能力強(qiáng) |
| 已經(jīng)有 Web 前端,想包成桌面應(yīng)用 | pywebview | Web 前端 + Python 后端組合 | 類似輕量 Electron,不自帶大型瀏覽器內(nèi)核 |
| 想走 Python 原生跨平臺應(yīng)用路線 | Toga / BeeWare | 關(guān)注原生控件和多平臺發(fā)布的人 | 項(xiàng)目理念好,適合關(guān)注 BeeWare 生態(tài) |
如果你完全沒有經(jīng)驗(yàn),我建議按這個順序嘗試:
- 入門練手:
Tkinter - 正式桌面軟件:
PySide6 - Web 技術(shù)棧轉(zhuǎn)桌面:
pywebview - 觸控/移動端:
Kivy或Flet - 實(shí)時圖表/調(diào)試工具:
Dear PyGui
二、選型時真正要關(guān)心什么
選 GUI 庫時,不要只看“界面好不好看”。更重要的是下面這些問題:
- 是否跨平臺:Windows、macOS、Linux 是否都要支持?
- 是否容易打包:能不能順利打包成 exe、app、deb?
- 是否適合復(fù)雜界面:表格、樹形控件、菜單、工具欄、拖拽、繪圖是否好做?
- 是否適合商業(yè)項(xiàng)目:開源協(xié)議和商業(yè)授權(quán)是否允許你的使用方式?
- 是否容易維護(hù):文檔、社區(qū)、示例、版本更新是否穩(wěn)定?
- 團(tuán)隊(duì)會什么:團(tuán)隊(duì)更熟 Python 控件,還是更熟 HTML/CSS/JS?
很多項(xiàng)目失敗不是因?yàn)?GUI 庫不夠強(qiáng),而是一開始選了和團(tuán)隊(duì)能力、產(chǎn)品形態(tài)不匹配的路線。
三、Tkinter:標(biāo)準(zhǔn)庫自帶,適合小工具和入門
Tkinter 是 Python 標(biāo)準(zhǔn)庫里的 GUI 方案。Python 官方文檔說明,tkinter 是 Python 面向 Tcl/Tk GUI 工具包的標(biāo)準(zhǔn)接口,大多數(shù) Python 安裝環(huán)境都可以直接使用。
優(yōu)點(diǎn):
- 不需要額外安裝第三方庫。
- 入門成本低。
- 很適合寫配置工具、批處理工具、文件處理工具。
ttk組件能讓界面比傳統(tǒng) Tk 控件更現(xiàn)代一點(diǎn)。
缺點(diǎn):
- 默認(rèn)視覺效果比較樸素。
- 做復(fù)雜大型軟件時,代碼組織和界面能力會吃力。
- 高級控件和現(xiàn)代交互需要自己補(bǔ)很多東西。
安裝:
# 通常不需要安裝,直接使用 Python 自帶的 tkinter python -m tkinter
最小案例:
import tkinter as tk
from tkinter import ttk, messagebox
def say_hello():
name = name_var.get().strip() or "Python 開發(fā)者"
messagebox.showinfo("提示", f"你好,{name}!")
root = tk.Tk()
root.title("Tkinter 小工具")
root.geometry("320x160")
frame = ttk.Frame(root, padding=16)
frame.pack(fill="both", expand=True)
ttk.Label(frame, text="請輸入名字:").pack(anchor="w")
name_var = tk.StringVar()
ttk.Entry(frame, textvariable=name_var).pack(fill="x", pady=8)
ttk.Button(frame, text="打招呼", command=say_hello).pack(anchor="e")
root.mainloop()
適合做什么:
- Excel/CSV 處理工具
- 文件批量改名工具
- 簡單配置面板
- 學(xué)習(xí) GUI 編程基礎(chǔ)
不太適合:
- 復(fù)雜商業(yè)軟件
- 高度定制的現(xiàn)代 UI
- 大型數(shù)據(jù)表格和復(fù)雜交互
四、PySide6 / PyQt6:Qt 系,適合正式桌面軟件
Qt 是非常成熟的跨平臺 GUI 框架。Python 里常見的 Qt 方案主要有兩個:
PySide6:Qt 官方維護(hù)的 Python 綁定,也叫 Qt for Python。PyQt6:Riverbank Computing 維護(hù)的 Qt Python 綁定。
官方 Qt for Python 文檔說明,PySide6 可以讓你在 Python 應(yīng)用中使用 Qt6 API。Qt 系的能力很完整:窗口、菜單、工具欄、表格、樹、繪圖、WebView、模型視圖、國際化、主題、資源系統(tǒng)等都比較成熟。
優(yōu)點(diǎn):
- 功能非常完整。
- 適合復(fù)雜業(yè)務(wù)軟件。
- 文檔、示例、社區(qū)資料多。
- 可以用 Qt Designer 設(shè)計(jì)界面。
- 商業(yè)軟件、工業(yè)軟件、內(nèi)部工具都常見。
缺點(diǎn):
- 學(xué)習(xí)曲線比 Tkinter 高。
- 打包體積通常更大。
- 信號槽、事件循環(huán)、模型視圖等概念需要認(rèn)真學(xué)。
- PySide6 和 PyQt6 的授權(quán)方式不同,商業(yè)項(xiàng)目必須提前確認(rèn)許可。
選 PySide6 還是 PyQt6:
| 選項(xiàng) | 建議 |
|---|---|
| 新項(xiàng)目、不確定授權(quán) | 優(yōu)先看 PySide6 |
| 已有 PyQt 項(xiàng)目 | 繼續(xù)用 PyQt6 / PyQt5,但確認(rèn)許可 |
| 需要商業(yè)閉源發(fā)布 | 一定提前核對 Qt、PySide6、PyQt6 的授權(quán)條款 |
安裝:
pip install pyside6
PySide6 最小案例:
import sys
from PySide6.QtWidgets import QApplication, QLabel, QMainWindow, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PySide6 桌面應(yīng)用")
self.resize(360, 180)
self.label = QLabel("點(diǎn)擊按鈕開始")
button = QPushButton("運(yùn)行任務(wù)")
button.clicked.connect(self.on_click)
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
def on_click(self):
self.label.setText("任務(wù)已經(jīng)執(zhí)行完成")
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())
如果使用 PyQt6,代碼結(jié)構(gòu)基本相似,主要是導(dǎo)入路徑不同:
import sys
from PyQt6.QtWidgets import QApplication, QLabel, QMainWindow, QPushButton, QVBoxLayout, QWidget
class MainWindow(QMainWindow):
def __init__(self):
super().__init__()
self.setWindowTitle("PyQt6 桌面應(yīng)用")
self.label = QLabel("Hello PyQt6")
button = QPushButton("點(diǎn)擊")
button.clicked.connect(lambda: self.label.setText("按鈕已點(diǎn)擊"))
layout = QVBoxLayout()
layout.addWidget(self.label)
layout.addWidget(button)
container = QWidget()
container.setLayout(layout)
self.setCentralWidget(container)
app = QApplication(sys.argv)
window = MainWindow()
window.show()
sys.exit(app.exec())適合做什么:
- 企業(yè)內(nèi)部管理工具
- 工業(yè)控制軟件
- 數(shù)據(jù)分析客戶端
- 圖像處理軟件
- 復(fù)雜配置平臺
不太適合:
- 只寫一個非常簡單的小腳本窗口
- 完全不想學(xué)習(xí) GUI 架構(gòu)的新手
五、wxPython:偏系統(tǒng)原生體驗(yàn)的傳統(tǒng)桌面方案
wxPython 是 wxWidgets 的 Python 封裝。wxPython 官網(wǎng)說明,它可以讓 Python 應(yīng)用在 Windows、macOS、Linux 等系統(tǒng)上創(chuàng)建接近原生的用戶界面。
優(yōu)點(diǎn):
- 系統(tǒng)原生感較強(qiáng)。
- 桌面控件比較完整。
- 適合傳統(tǒng)桌面應(yīng)用。
- 跨平臺能力成熟。
缺點(diǎn):
- 社區(qū)熱度不如 Qt。
- 文檔和學(xué)習(xí)資料相對分散。
- UI 寫法對新手不如 Tkinter 直觀。
安裝:
pip install wxpython
最小案例:
import wx
class MainFrame(wx.Frame):
def __init__(self):
super().__init__(parent=None, title="wxPython 桌面應(yīng)用", size=(360, 180))
panel = wx.Panel(self)
box = wx.BoxSizer(wx.VERTICAL)
self.label = wx.StaticText(panel, label="點(diǎn)擊按鈕開始")
button = wx.Button(panel, label="運(yùn)行任務(wù)")
button.Bind(wx.EVT_BUTTON, self.on_click)
box.Add(self.label, flag=wx.ALL, border=12)
box.Add(button, flag=wx.ALL, border=12)
panel.SetSizer(box)
def on_click(self, event):
self.label.SetLabel("任務(wù)已經(jīng)執(zhí)行完成")
app = wx.App()
frame = MainFrame()
frame.Show()
app.MainLoop()適合做什么:
- 傳統(tǒng) Windows/macOS/Linux 工具
- 希望界面更接近系統(tǒng)原生風(fēng)格的軟件
- 中等復(fù)雜度桌面應(yīng)用
不太適合:
- 想要非常現(xiàn)代、動畫豐富的界面
- 想找大量中文新手教程
六、Kivy:適合觸控、自定義 UI 和移動端
Kivy 官網(wǎng)把自己定位為開源 Python 應(yīng)用開發(fā)框架,可以使用一套代碼部署到 Windows、Linux、macOS、iOS、Android 等平臺。
優(yōu)點(diǎn):
- 跨桌面和移動端。
- 適合觸控界面、多點(diǎn)觸控、自定義控件。
- UI 風(fēng)格自由,不依賴系統(tǒng)原生控件。
- MIT License,商業(yè)使用相對友好。
缺點(diǎn):
- 默認(rèn)界面不是傳統(tǒng)系統(tǒng)原生風(fēng)格。
- 學(xué)習(xí) Kivy 的布局、屬性、事件機(jī)制需要時間。
- 如果只做普通辦公軟件,可能不是最省事的選擇。
安裝:
pip install "kivy[base]"
最小案例:
from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.uix.label import Label
class DemoApp(App):
def build(self):
layout = BoxLayout(orientation="vertical", padding=20, spacing=12)
label = Label(text="點(diǎn)擊按鈕開始")
button = Button(text="運(yùn)行任務(wù)", size_hint=(1, 0.3))
def on_press(instance):
label.text = "任務(wù)已經(jīng)執(zhí)行完成"
button.bind(on_press=on_press)
layout.add_widget(label)
layout.add_widget(button)
return layout
DemoApp().run()適合做什么:
- 觸控屏應(yīng)用
- 展示大屏
- 移動端原型
- 自定義風(fēng)格強(qiáng)的工具
不太適合:
- 想要 Windows 原生控件風(fēng)格
- 傳統(tǒng)表單、表格、菜單很多的企業(yè)軟件
七、Flet:用 Python 寫 Flutter 風(fēng)格跨端應(yīng)用
Flet 官方文檔說明,它允許開發(fā)者用 Python 構(gòu)建 Web、桌面和移動應(yīng)用,不需要事先掌握前端開發(fā)。它底層基于 Flutter,界面風(fēng)格現(xiàn)代,上手體驗(yàn)比較友好。
優(yōu)點(diǎn):
- 寫法簡潔,入門快。
- 支持桌面、Web、移動端。
- UI 視覺比較現(xiàn)代。
- 對不想寫 JavaScript/Flutter/Dart 的 Python 開發(fā)者友好。
缺點(diǎn):
- 項(xiàng)目長期穩(wěn)定性要看 Flet 生態(tài)發(fā)展。
- 復(fù)雜原生桌面能力不如 Qt。
- 對底層 Flutter 機(jī)制不了解時,遇到復(fù)雜問題排查成本會變高。
安裝:
pip install "flet[all]"
最小案例:
import flet as ft
def main(page: ft.Page):
page.title = "Flet 桌面應(yīng)用"
page.window_width = 360
page.window_height = 220
result = ft.Text("點(diǎn)擊按鈕開始")
def run_task(e):
result.value = "任務(wù)已經(jīng)執(zhí)行完成"
page.update()
page.add(
ft.Column(
controls=[
result,
ft.ElevatedButton("運(yùn)行任務(wù)", on_click=run_task),
],
spacing=16,
)
)
ft.run(main)運(yùn)行:
flet run app.py
適合做什么:
- 快速原型
- 現(xiàn)代風(fēng)格工具
- 想同時嘗試 Web/桌面/移動端的應(yīng)用
- 數(shù)據(jù)錄入、管理面板、輕量客戶端
不太適合:
- 高度依賴系統(tǒng)原生控件的桌面軟件
- 需要深度操作系統(tǒng)集成的復(fù)雜客戶端
八、Dear PyGui:適合實(shí)時工具、監(jiān)控面板和調(diào)試器
Dear PyGui 官方文檔介紹它是一個易用、動態(tài)、GPU 加速、跨平臺的 Python GUI 工具包,內(nèi)置按鈕、單選框、菜單、布局、繪圖、表格等能力。
優(yōu)點(diǎn):
- 性能好,適合實(shí)時刷新。
- 很適合做調(diào)試工具、儀表盤、開發(fā)者工具。
- 繪圖、表格、資源查看等能力比較突出。
- 代碼量較少,上手速度快。
缺點(diǎn):
- UI 風(fēng)格更偏工具化,不是傳統(tǒng)業(yè)務(wù)軟件風(fēng)格。
- 不適合做特別強(qiáng)調(diào)系統(tǒng)原生體驗(yàn)的軟件。
- 大型業(yè)務(wù)應(yīng)用的組織方式需要自己設(shè)計(jì)。
安裝:
pip install dearpygui
最小案例:
from dearpygui import dearpygui as dpg
def run_task():
dpg.set_value("result_text", "任務(wù)已經(jīng)執(zhí)行完成")
dpg.create_context()
with dpg.window(label="Dear PyGui 桌面應(yīng)用", width=360, height=180):
dpg.add_text("點(diǎn)擊按鈕開始", tag="result_text")
dpg.add_button(label="運(yùn)行任務(wù)", callback=run_task)
dpg.create_viewport(title="Dear PyGui Demo", width=420, height=240)
dpg.setup_dearpygui()
dpg.show_viewport()
dpg.start_dearpygui()
dpg.destroy_context()適合做什么:
- 實(shí)時數(shù)據(jù)監(jiān)控
- 算法調(diào)試面板
- 圖形工具
- 游戲/引擎編輯器輔助工具
- 設(shè)備狀態(tài)儀表盤
不太適合:
- 普通辦公類 CRUD 軟件
- 對系統(tǒng)原生風(fēng)格要求很高的軟件
九、pywebview:把 Web 頁面裝進(jìn)原生窗口
pywebview 官方文檔說明,它是一個輕量 native webview wrapper,可以在原生 GUI 窗口里顯示 HTML 內(nèi)容。它可以讓你用 Web 技術(shù)寫界面,同時用 Python 做本地能力和后端邏輯。
它有點(diǎn)像輕量 Electron,但默認(rèn)不打包一個大型瀏覽器內(nèi)核,而是使用系統(tǒng)提供的 WebView 能力。
優(yōu)點(diǎn):
- 前端同學(xué)非常容易上手。
- 可以復(fù)用 HTML/CSS/JavaScript 生態(tài)。
- Python 與 JavaScript 可以雙向通信。
- 比 Electron 更輕一些。
缺點(diǎn):
- 依賴系統(tǒng) WebView,跨平臺表現(xiàn)要測試。
- 桌面原生控件能力不是重點(diǎn)。
- 安全邊界、前后端通信需要設(shè)計(jì)好。
安裝:
pip install pywebview
最小案例:
import webview
class Api:
def greet(self, name):
return f"你好,{name or 'Python 開發(fā)者'}!"
html = """
<!doctype html>
<html>
<body style="font-family: sans-serif; padding: 24px;">
<h2>pywebview 桌面應(yīng)用</h2>
<input id="name" placeholder="請輸入名字" />
<button onclick="sayHello()">打招呼</button>
<p id="result">等待操作</p>
<script>
async function sayHello() {
const name = document.getElementById("name").value;
const message = await pywebview.api.greet(name);
document.getElementById("result").innerText = message;
}
</script>
</body>
</html>
"""
window = webview.create_window("pywebview 示例", html=html, js_api=Api())
webview.start()
適合做什么:
- 已經(jīng)有 Web 前端的項(xiàng)目
- 想把本地 Python 能力包裝成桌面工具
- 后臺是 Python,界面交給 HTML/CSS/JS
- 輕量客戶端
不太適合:
- 完全不懂前端的 Python 初學(xué)者
- 對系統(tǒng)原生桌面控件有強(qiáng)需求的軟件
十、Toga / BeeWare:Python 原生跨平臺應(yīng)用路線
Toga 是 BeeWare 生態(tài)的一部分。官方文檔介紹它是 Python native、OS native、cross-platform 的 GUI 工具包,目標(biāo)是用統(tǒng)一接口寫跨平臺原生應(yīng)用。
優(yōu)點(diǎn):
- 理念清晰:Python 原生、系統(tǒng)原生、跨平臺。
- BeeWare 生態(tài)關(guān)注應(yīng)用打包和發(fā)布。
- 支持桌面、移動端、Web 等多個目標(biāo)。
缺點(diǎn):
- 相比 Qt、Tkinter,中文資料和項(xiàng)目案例少。
- 復(fù)雜項(xiàng)目落地前要充分驗(yàn)證控件能力。
- 如果追求最穩(wěn)妥的企業(yè)桌面方案,Qt 仍然更常見。
安裝:
pip install toga
最小案例:
import toga
from toga.style import Pack
from toga.style.pack import COLUMN
class DemoApp(toga.App):
def startup(self):
self.label = toga.Label("點(diǎn)擊按鈕開始")
button = toga.Button("運(yùn)行任務(wù)", on_press=self.run_task)
box = toga.Box(
children=[self.label, button],
style=Pack(direction=COLUMN, padding=20),
)
self.main_window = toga.MainWindow(title="Toga 桌面應(yīng)用")
self.main_window.content = box
self.main_window.show()
def run_task(self, widget):
self.label.text = "任務(wù)已經(jīng)執(zhí)行完成"
def main():
return DemoApp("Toga Demo", "com.example.togademo")
if __name__ == "__main__":
main().main_loop()
適合做什么:
- 想關(guān)注 BeeWare 生態(tài)的跨平臺 Python 應(yīng)用
- 希望盡量使用原生控件
- 愿意嘗試 Python 原生應(yīng)用發(fā)布路線的項(xiàng)目
不太適合:
- 追求資料最多、坑最少的商業(yè)桌面項(xiàng)目
- 需要大量復(fù)雜控件且工期很緊的項(xiàng)目
十一、一個更實(shí)用的決策樹
可以按下面這個思路選:
只是做一個簡單窗口? -> Tkinter 要做長期維護(hù)的復(fù)雜桌面軟件? -> PySide6 / PyQt6 團(tuán)隊(duì)有 Web 前端經(jīng)驗(yàn)? -> pywebview 需要觸控、移動端或自定義視覺? -> Kivy / Flet 需要實(shí)時圖表、監(jiān)控面板、調(diào)試工具? -> Dear PyGui 希望系統(tǒng)原生風(fēng)格,并且項(xiàng)目復(fù)雜度中等? -> wxPython 想研究 Python 原生跨平臺發(fā)布? -> Toga / BeeWare
十二、打包發(fā)布也要提前考慮
寫 GUI 程序只是第一步,真正交付給別人時還要打包。
常見打包工具:
PyInstaller:最常見,適合很多 Python 桌面應(yīng)用。Nuitka:會把 Python 編譯成 C/C++ 再構(gòu)建,適合追求性能和保護(hù)源碼的場景。cx_Freeze:傳統(tǒng)打包工具,也可用于桌面應(yīng)用。Briefcase:BeeWare 生態(tài)工具,常和 Toga 配合。- Flet/Kivy/Qt 自己也有各自推薦的發(fā)布方式。
建議在項(xiàng)目早期就做一次最小打包驗(yàn)證,不要等功能全部寫完才發(fā)現(xiàn)依賴、資源文件、動態(tài)庫、WebView 運(yùn)行時、字體、圖片路徑都有問題。
十三、我的個人建議
如果你是 Python 初學(xué)者:
- 先用
Tkinter寫 2 到 3 個小工具。 - 理解窗口、控件、布局、事件綁定。
- 再學(xué)習(xí)
PySide6,它更適合做正式桌面軟件。
如果你要做公司內(nèi)部工具:
- 簡單工具:
Tkinter - 中大型工具:
PySide6 - 已有前端頁面:
pywebview
如果你要做數(shù)據(jù)/算法/設(shè)備相關(guān)工具:
- 普通業(yè)務(wù)界面:
PySide6 - 實(shí)時曲線、調(diào)試面板:
Dear PyGui - 觸控屏、大屏展示:
Kivy
如果你要做跨端現(xiàn)代界面:
- 快速原型:
Flet - 自定義觸控界面:
Kivy - 原生跨平臺探索:
Toga
十四、總結(jié)
Python 桌面應(yīng)用沒有唯一標(biāo)準(zhǔn)答案。選型的核心不是“哪個庫最強(qiáng)”,而是“哪個庫最適合你的項(xiàng)目形態(tài)”。
簡單總結(jié):
| 庫 | 一句話建議 |
|---|---|
| Tkinter | 最適合入門和簡單工具 |
| PySide6 / PyQt6 | 最適合正式、復(fù)雜、長期維護(hù)的桌面軟件 |
| wxPython | 適合偏系統(tǒng)原生風(fēng)格的傳統(tǒng)桌面應(yīng)用 |
| Kivy | 適合觸控、移動端和自定義 UI |
| Flet | 適合快速寫現(xiàn)代跨端應(yīng)用 |
| Dear PyGui | 適合實(shí)時工具、監(jiān)控面板、調(diào)試器 |
| pywebview | 適合 Web 技術(shù)棧包裝桌面客戶端 |
| Toga | 適合探索 Python 原生跨平臺應(yīng)用路線 |
新手不要一開始就糾結(jié)太久。最好的方式是選 1 到 2 個方向,各寫一個小 demo,再根據(jù)實(shí)際打包、界面復(fù)雜度、團(tuán)隊(duì)能力和維護(hù)周期做決定。
參考資料
- Python 官方文檔:tkinter — Python interface to Tcl/Tk
https://docs.python.org/3/library/tkinter.html - Qt for Python 官方文檔
https://doc.qt.io/qtforpython-6/ - Riverbank Computing:PyQt
https://www.riverbankcomputing.com/software/pyqt - wxPython 官網(wǎng)
https://wxpython.org/ - Kivy 官網(wǎng)
https://kivy.org/ - Flet 官方文檔
https://flet.dev/docs/ - Dear PyGui 官方文檔
https://dearpygui.readthedocs.io/ - pywebview 官方文檔
https://pywebview.idepy.com/en/guide/ - Toga 官方文檔
https://toga.beeware.org/
到此這篇關(guān)于Python桌面應(yīng)用GUI庫選型之Tkinter、Qt、Kivy、Flet等怎么選的文章就介紹到這了,更多相關(guān)Tkinter、Qt、Kivy、Flet怎么選內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
python實(shí)現(xiàn)json轉(zhuǎn)yolo格式
在目標(biāo)檢測數(shù)據(jù)集處理中,我們經(jīng)常會遇到標(biāo)簽之間不同格式的轉(zhuǎn)化,本文主要介紹了python實(shí)現(xiàn)json轉(zhuǎn)yolo格式,具有一定的參考價值,感興趣的可以了解一下2023-12-12
基于python實(shí)現(xiàn)微信好友數(shù)據(jù)分析(簡單)
本文主要介紹利用網(wǎng)頁端微信獲取數(shù)據(jù),實(shí)現(xiàn)個人微信好友數(shù)據(jù)的獲取,并進(jìn)行一些簡單的數(shù)據(jù)分析,本文通過實(shí)例代碼給大家介紹的非常詳細(xì),具有一定的參考借鑒價值,需要的朋友參考下吧2020-02-02
python自動導(dǎo)入包的實(shí)現(xiàn)
本文主要介紹了python自動導(dǎo)入包的實(shí)現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2023-04-04
python+OpenCV實(shí)現(xiàn)圖像拼接
這篇文章主要為大家詳細(xì)介紹了python+OpenCV實(shí)現(xiàn)圖像拼接,文中示例代碼介紹的非常詳細(xì),具有一定的參考價值,感興趣的小伙伴們可以參考一下2020-03-03
對python同一個文件夾里面不同.py文件的交叉引用方法詳解
今天小編就為大家分享一篇對python同一個文件夾里面不同.py文件的交叉引用方法詳解,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2018-12-12
django開發(fā)教程之利用緩存文件進(jìn)行頁面緩存的方法
緩存相信對各位程序員們來說都不陌生,下面這篇文章主要給大家介紹了關(guān)于django開發(fā)教程之利用緩存文件進(jìn)行頁面緩存的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們可以參考借鑒,下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。2017-11-11

