国产精品电影_久久视频免费_欧美日韩国产激情_成年人视频免费在线播放_日本久久亚洲电影_久久都是精品_66av99_九色精品美女在线_蜜臀a∨国产成人精品_冲田杏梨av在线_欧美精品在线一区二区三区_麻豆mv在线看

2025 年,這九個 Python GUI 庫讓我眼前一亮

開發(fā) 前端
無論你是想快速開發(fā)一個小工具,還是構(gòu)建復(fù)雜的企業(yè)級應(yīng)用,總有一款適合你。下面就為大家介紹8個值得關(guān)注的Python GUI庫。

還記得那些只能在黑乎乎命令行中運行的Python腳本嗎?時代變了!2025年的用戶期待的是界面美觀、交互流暢的現(xiàn)代應(yīng)用。好消息是,Python的GUI生態(tài)系統(tǒng)已經(jīng)悄然進化,涌現(xiàn)出一批強大而又易用的界面庫。

無論你是想快速開發(fā)一個小工具,還是構(gòu)建復(fù)雜的企業(yè)級應(yīng)用,總有一款適合你。下面就為大家介紹8個值得關(guān)注的Python GUI庫。

傳統(tǒng)桌面應(yīng)用庫

1. Tkinter - Python內(nèi)置的GUI工具包

作為Python標準庫的一部分,Tkinter無需額外安裝,是初學(xué)者入門GUI開發(fā)最直接的選擇。它提供了基本的窗口、按鈕、輸入框等組件,足以快速構(gòu)建小型桌面工具。

import tkinter as tk

def say_hello():
    greeting_label.config(text="Hello, " + name_entry.get())

# 創(chuàng)建主窗口
root = tk.Tk()
root.title("Tkinter Example")
root.geometry("300x150")

# 創(chuàng)建控件
name_label = tk.Label(root, text="Enter your name:")
name_entry = tk.Entry(root)
greeting_label = tk.Label(root, text="")
confirm_button = tk.Button(root, text="Say Hello", command=say_hello)

# 布局控件
name_label.pack(pady=5)
name_entry.pack(pady=5)
confirm_button.pack(pady=5)
greeting_label.pack(pady=5)

# 啟動事件循環(huán)
root.mainloop(A

2. Kivy - 跨平臺的多點觸控應(yīng)用庫

Kivy是一個開源的Python庫,非常適合開發(fā)需要跨平臺(包括移動設(shè)備)運行且支持多點觸控的應(yīng)用程序。它使用獨特的KV語言來分離界面設(shè)計與業(yè)務(wù)邏輯。

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.label import Label
from kivy.uix.textinput import TextInput
from kivy.uix.button import Button

class KivyApp(App):
    def build(self):
        # 創(chuàng)建主布局
        layout = BoxLayout(orientatinotallow='vertical', padding=20, spacing=10)
        
        # 創(chuàng)建控件
        self.name_input = TextInput(
            hint_text='Enter your name', 
            size_hint=(1, 0.2)
        )
        self.greeting_label = Label(
            text='Greeting will appear here',
            size_hint=(1, 0.2)
        )
        confirm_button = Button(
            text='Say Hello',
            size_hint=(1, 0.2)
        )
        confirm_button.bind(on_press=self.say_hello)
        
        # 添加控件到布局
        layout.add_widget(self.name_input)
        layout.add_widget(confirm_button)
        layout.add_widget(self.greeting_label)
        
        return layout

    def say_hello(self, instance):
        self.greeting_label.text = "Hello, " + self.name_input.text

if __name__ == '__main__':
    KivyApp().run()

現(xiàn)代Web風(fēng)格應(yīng)用庫

3. Flet - 基于Flutter的現(xiàn)代UI

Flet是一個新興的GUI框架,它將Flutter的強大UI引擎帶到了Python中-2。你可以使用Python構(gòu)建美觀的Web、桌面和移動應(yīng)用,享受熱重載、跨平臺部署等特性,而無需編寫任何Dart代碼。

圖片圖片

Flet允許開發(fā)者使用Python語言,利用Flutter的強大能力來構(gòu)建美觀的Web、桌面和移動應(yīng)用。它支持熱重載和跨平臺部署,讓你能用純Python創(chuàng)建出像素級完美的界面。

核心特性:

  • 純Python編寫UI,無需HTML/CSS/JS
  • 支持Web、桌面和移動端運行
  • 實時熱更新、調(diào)試體驗流暢
import flet as ft

def main(page: ft.Page):
    # 頁面基礎(chǔ)設(shè)置
    page.title = "Flet Example"
    page.vertical_alignment = ft.MainAxisAlignment.CENTER
    page.horizontal_alignment = ft.CrossAxisAlignment.CENTER
    
    # 創(chuàng)建控件
    name_field = ft.TextField(
        label="Your name",
        width=300,
        text_align=ft.TextAlign.LEFT
    )
    greeting_text = ft.Text()
    
    def button_clicked(e):
        greeting_text.value = f"Hello, {name_field.value}!"
        page.update()
    
    confirm_button = ft.ElevatedButton(
        text="Say Hello",
        on_click=button_clicked
    )
    
    # 將控件添加到頁面
    page.add(
        name_field,
        confirm_button,
        greeting_text
    )

# 啟動應(yīng)用(可在桌面運行,或通過瀏覽器訪問)
ft.app(target=main)
# 若想以Web應(yīng)用運行,可改用:ft.app(target=main, view=ft.WEB_BROWSER)

4. NiceGUI - 簡約高效的Web界面

NiceGUI是一個基于FastAPI和Vue.js的高級GUI框架,讓你只需編寫Python代碼就能創(chuàng)建出功能豐富的瀏覽器基應(yīng)用。它非常適合制作儀表盤、內(nèi)部工具或交互式原型。

NiceGUI讓你能夠通過編寫純Python代碼,生成基于瀏覽器的精美用戶界面。它底層使用FastAPI和Vue.js,但你完全不需要了解這些技術(shù),只需專注于Python開發(fā)即可。

典型應(yīng)用場景:

  • 內(nèi)部工具和儀表盤開發(fā)
  • 交互式原型設(shè)計
  • 實時數(shù)據(jù)監(jiān)控界面
from nicegui import ui

def greet():
    greeting_label.set_text(f"Hello, {name_input.value}!")

# 創(chuàng)建控件
name_input = ui.input(label='Enter your name')
confirm_button = ui.button('Say Hello', on_click=greet)
greeting_label = ui.label()

# 啟動應(yīng)用(默認在 http://localhost:8080 運行)
ui.run()

最近發(fā)布的NiceGUI 3.0.0引入了許多新特性和改進,包括新的腳本模式和事件系統(tǒng),值得關(guān)注。

5. Eel - 連接Python與Web技術(shù)

Eel是一個輕量級的庫,可以讓你輕松地將Python后端與基于HTML/CSS/JavaScript的前端連接起來。如果你已有Web開發(fā)經(jīng)驗,希望用Web技術(shù)構(gòu)建桌面應(yīng)用界面,Eel是個不錯的選擇。

Eel入門還有一些案例_eel庫-CSDN博客Eel入門還有一些案例_eel庫-CSDN博客

如果你已經(jīng)熟悉HTML、CSS和JavaScript,Eel提供了一種簡單的方式,將現(xiàn)有的Web技術(shù)封裝到Python應(yīng)用程序中。它類似于Electron,但更加輕量級。

核心特性:

  • 支持現(xiàn)有的Web技術(shù)棧
  • Python與JavaScript雙向通信
  • 輕量級,易于上手

Python后端 (main.py):

import eel

# 初始化包含Web文件的文件夾
eel.init('web')

# 暴露Python函數(shù)給JavaScript
@eel.expose
def greet_user(name):
    return f"Hello, {name}!"

# 啟動應(yīng)用
eel.start('index.html', size=(400, 300))

HTML前端 (web/index.html):

<!DOCTYPE html>
<html>
<head>
    <title>Eel Example</title>
</head>
<body>
    <input type="text" id="nameInput" placeholder="Enter your name">
    <button onclick="sayHello()">Say Hello</button>
    <p id="greeting"></p>

    <script type="text/javascript" src="/eel.js"></script>
    <script>
        async function sayHello() {
            const name = document.getElementById('nameInput').value;
            const greeting = await eel.greet_user(name)();
            document.getElementById('greeting').innerText = greeting;
        }
    </script>
</body>
</html>

6. Reflex - 全棧Python解決方案

Reflex(前身為Pynecone)讓你能夠完全使用Python構(gòu)建全棧Web應(yīng)用。它會自動生成React前端,并提供內(nèi)置的狀態(tài)管理,非常適合需要現(xiàn)代化用戶界面的復(fù)雜應(yīng)用。

特色功能:

  • 完整的全棧應(yīng)用開發(fā)能力
  • 內(nèi)置狀態(tài)管理
  • 基于React的高質(zhì)量UI
import reflex as rx

class State(rx.State):
    name: str = ""
    counter: int = 0

    def set_name(self, name):
        self.name = name

    def increment_counter(self):
        self.counter += 1

def index():
    return rx.vstack(
        rx.input(
            placeholder="Enter your name",
            on_change=State.set_name,
            width="200px"
        ),
        rx.button(
            "Say Hello",
            on_click=lambda: State.set_name(State.name),
            width="200px"
        ),
        rx.text(State.name),
        rx.divider(),
        rx.text(f"Counter: {State.counter}"),
        rx.button(
            "Increment",
            on_click=State.increment_counter,
            width="200px"
        ),
        spacing="1em",
        align="center",
        padding_top="10%"
    )

app = rx.App()
app.add_page(index)
app.compile()

7. PyWebView - 輕量級Web視圖

PyWebView使用系統(tǒng)原生的WebView組件來顯示W(wǎng)eb內(nèi)容,而無需像Electron那樣捆綁整個瀏覽器引擎。它是一個極其輕量級的解決方案,適合將現(xiàn)有Web應(yīng)用打包為桌面程序。

pywebview | pywebviewpywebview | pywebview

macOSmacOS

核心優(yōu)勢:

  • 超輕量級,占用資源少
  • 原生窗口與Web技術(shù)結(jié)合
  • 簡單的JavaScript-Python橋接
import webview
import threading

def run_window():
    # 創(chuàng)建瀏覽器窗口
    window = webview.create_window(
        'PyWebView Example',
        'web/index.html',  # 加載本地HTML文件
        width=400,
        height=300
    )
    webview.start()

# 在后臺線程中啟動窗口
if __name__ == '__main__':
    thread = threading.Thread(target=run_window)
    thread.start()

終端文本界面庫

8. Textual - 終端里的現(xiàn)代GUI

Textual是一個強大的Python庫,用于在終端中創(chuàng)建豐富的文本用戶界面。它支持類似CSS的樣式、鼠標操作和異步編程,可以讓你為命令行工具打造現(xiàn)代感的交互體驗。

圖片圖片

Textual是一個用于構(gòu)建現(xiàn)代文本用戶界面的框架,它在終端中提供了類似GUI的體驗。支持1670萬種顏色、鼠標交互和流暢的動畫效果,徹底改變了傳統(tǒng)命令行工具的使用體驗。

核心優(yōu)勢:

  • 在終端中創(chuàng)建豐富的用戶界面
  • 支持CSS樣式和現(xiàn)代色彩
  • 完整的鼠標和鍵盤支持

適用場景:

  • 終端工具開發(fā)
  • 數(shù)據(jù)可視化
  • 系統(tǒng)監(jiān)控工具
from textual.app import App, ComposeResult
from textual.widgets import Header, Footer, Static
from textual.containers import Container
from textual import events

class ClockApp(App):
    CSS = """
    Container {
        align: center middle;
        height: 100%;
    }
    #time_display {
        width: auto;
        height: auto;
        background: $panel;
        color: $text;
        padding: 1 2;
        border: tall $background;
    }
    #time_display:focus {
        border: tall $accent;
    }
    """

    def compose(self) -> ComposeResult:
        yield Header()
        yield Container(Static("00:00:00", id="time_display"))
        yield Footer()

    def on_ready(self) -> None:
        self.set_interval(1, self.update_time)

    def update_time(self):
        from datetime import datetime
        current_time = datetime.now().strftime("%H:%M:%S")
        self.query_one("#time_display", Static).update(current_time)

if __name__ == "__main__":
    app = ClockApp()
    app.run()

高性能專業(yè)應(yīng)用庫

9. Dear PyGui - GPU加速的專業(yè)級GUI

Dear PyGui是一個GPU加速的圖形界面庫,其設(shè)計靈感來源于游戲引擎。它特別適合需要高頻刷新和數(shù)據(jù)可視化的場景,如工程工具、科學(xué)計算和實時儀表盤。

圖片

如果你需要開發(fā)數(shù)據(jù)可視化應(yīng)用、工程工具或?qū)崟r儀表盤,Dear PyGui是個不錯的選擇。它采用GPU加速渲染,性能出色,特別適合需要高頻刷新和數(shù)據(jù)密集型場景。

核心優(yōu)勢:

  • GPU加速渲染,性能卓越
  • 專為數(shù)據(jù)可視化和高頻刷新場景設(shè)計
  • 類似游戲引擎的即時模式界面
from dearpygui.core import *
from dearpygui.simple import *

def save_callback(sender, data):
    input_value = get_value("Input Text")
    log_debug(f"Input value saved as: {input_value}")

def button_callback(sender, data):
    input_value = get_value("Input Text")
    add_text("Result Text", f"You entered: {input_value}")

with window("Main Window"):
    add_text("This is a Dear PyGUI example")
    add_input_text("Input Text", label="Type something", default_value="Hello GUI")
    add_button("Show Input", callback=button_callback)
    add_same_line()
    add_button("Save", callback=save_callback)
    add_separator()
    add_text("Result Text", default_value="Your input will appear here")

start_dearpygui()

各場景選庫參考

選擇哪個庫,主要看你的具體需求:

  • 初學(xué)者或快速開發(fā)小型工具:從 Tkinter 開始最穩(wěn)妥。
  • 移動端或需要觸控支持:Kivy 是專為此設(shè)計的。
  • 追求美觀且跨平臺的現(xiàn)代應(yīng)用:Flet 能帶來類似Flutter的體驗。
  • 數(shù)據(jù)密集型或高性能應(yīng)用:Dear PyGui 的GPU加速能派上用場。
  • 快速創(chuàng)建瀏覽器基的內(nèi)部工具:NiceGUI 或 Reflex 效率很高。
  • 將現(xiàn)有Web項目打包為桌面應(yīng)用:Eel 或 PyWebView 很合適。
  • 為命令行工具增強交互性:Textual 能讓終端程序煥然一新。

庫名稱

主要特點

理想應(yīng)用場景

示例代碼簡要說明

Flet

基于Flutter,跨平臺(Web/桌面/移動)

需要精美UI和跨平臺部署的現(xiàn)代應(yīng)用

簡單的輸入和按鈕交互

Dear PyGui

GPU加速,適合數(shù)據(jù)密集型應(yīng)用

數(shù)據(jù)可視化、工程工具、實時儀表盤

基礎(chǔ)窗口和交互元素

NiceGUI

基于Web,僅需Python,自動生成VueJS前端

內(nèi)部工具、儀表盤、交互式原型

輸入響應(yīng)和最小應(yīng)用結(jié)構(gòu)

Eel

輕量級,可連接Python與現(xiàn)有Web技術(shù)(HTML/CSS/JS)

將現(xiàn)有Web項目快速打包為桌面應(yīng)用

Python與JavaScript的互相調(diào)用

Reflex

全棧Python,生成React前端,內(nèi)置狀態(tài)管理

需要React級別UI質(zhì)量的全棧Web應(yīng)用

狀態(tài)管理與UI綁定的計數(shù)器

Textual

在終端中創(chuàng)建豐富的文本用戶界面,支持CSS和鼠標

終端工具、數(shù)據(jù)監(jiān)控、命令行程序現(xiàn)代化

簡單的計時器顯示

PyWebView

輕量級,使用系統(tǒng)原生WebView組件

以最小開銷將Web應(yīng)用嵌入原生窗口

創(chuàng)建加載網(wǎng)頁的窗口

Tkinter

Python內(nèi)置,無需安裝,簡單易用

快速開發(fā)小型桌面工具、初學(xué)者學(xué)習(xí)

經(jīng)典的按鈕點擊事件

Kivy

開源,跨平臺,支持多點觸控

移動應(yīng)用、需要觸控功能的桌面應(yīng)用

屏幕管理和按鈕交互

希望這些例子能幫助你更好地向讀者展示不同Python GUI庫的特點。根據(jù)文章風(fēng)格,你可以選擇呈現(xiàn)全部或部分示例。

責(zé)任編輯:武曉燕 來源: 數(shù)據(jù)STUDIO
相關(guān)推薦

2022-12-19 08:23:24

2017-03-06 18:35:22

VRAR應(yīng)用

2024-06-17 10:24:21

2023-07-16 22:37:46

JavaScript代碼任務(wù)

2021-08-17 11:20:25

Vue前端技巧

2021-06-30 09:56:24

MySQL數(shù)據(jù)庫索引

2022-07-28 15:46:08

Linux工具

2025-08-22 13:37:22

2024-03-14 17:41:25

AIGC人工智能應(yīng)用

2023-08-10 08:16:41

Hash技術(shù)哈希表

2022-02-28 23:37:16

iOS蘋果系統(tǒng)

2022-12-09 09:39:20

Vue3Vue2

2025-03-28 10:51:17

Python開發(fā)Python3.13

2024-01-03 15:59:56

Linux發(fā)行版

2015-12-18 10:00:53

2016科技

2017-09-11 08:35:15

PythonGUIIT

2025-01-14 12:00:00

Java開發(fā)代碼
點贊
收藏

51CTO技術(shù)棧公眾號

japanese色系久久精品| 久久xxxx精品视频| 欧美一区二区视频在线观看| av一卡二卡| 久久久久久麻豆| 国产精品一二三在线观看| 亚洲综合第一页| 秋霞一区二区| 亚洲一区第一页| 丰满女人性猛交| 日韩视频一区| 国产成人精品福利一区二区三区| 免费在线黄色电影| 悠悠色在线精品| 欧美一级裸体视频| 91麻豆福利精品推荐| 久久久久久香蕉网| 欧美午夜三级| 视频一区视频二区国产精品 | 91在线观看污| 欧美日韩视频免费| 在线看成人短视频| 欧美午夜影院在线视频| 国精产品999国精产品官网| 女人香蕉久久**毛片精品| 欧美mv和日韩mv的网站| 国产福利在线播放麻豆| 成人av一区二区三区| 亚洲五码在线观看视频| 国产精品一卡二卡在线观看| 人妻互换免费中文字幕| 2020国产精品自拍| 黄色国产精品视频| 国产精品成人网| 免费在线观看麻豆视频| 在线视频国产一区| 免费在线激情视频| 国产亚洲精品7777| www.大网伊人| 欧美日韩裸体免费视频| 欧美xxxx吸乳| 97se亚洲国产综合自在线| avav在线看| 亚洲欧美日韩一区| www 日韩| 亚洲美女精品久久| eeuss在线观看| 精品日韩中文字幕| 在线午夜影院| 日韩网站在线观看| 福利视频在线看| 精品捆绑美女sm三区| 婷婷综合六月| 人妖精品videosex性欧美| 国语精品一区| 日韩精品免费一区| 欧美日韩免费观看一区=区三区| 极品校花啪啪激情久久| 另类小说欧美激情| 91影院未满十八岁禁止入内| 在线综合亚洲| 久色视频在线播放| 亚洲成人自拍一区| 国产啊啊啊视频在线观看| 欧美激情亚洲一区| 一区在线视频| 日韩av免费看| 欧美××××黑人××性爽 | 97精品在线观看| 韩国欧美一区| www.爱色av.com| 色先锋aa成人| 亚洲91在线| 久久国产一区二区| 中文字幕日韩精品一区| 日韩一级性生活片| 性感美女极品91精品| gay欧美网站| 国产视频福利一区| 懂色av一区二区在线播放| 中文字幕免费在线| 亚洲天堂2014| 国产丝袜在线播放| 7m第一福利500精品视频| 日韩av一区二| 欧美一区二区视频17c| 国产精品热久久久久夜色精品三区| www.一区二区.com| 色噜噜狠狠色综合中国| 中文字幕av高清在线观看| 一夜七次郎国产精品亚洲| 国产精品久久久久无码av| 日韩免费在线播放| 国产在线精品一区二区三区不卡| 1024在线视频| 精品国产一区二区三区四区在线观看| 成人免费看视频网站| 成人黄色免费看| 久久精品亚洲国产奇米99| 国产蜜臀一区二区打屁股调教| 国产日韩欧美自拍| 久久久久久电影| 天堂中文在线播放| 懂色一区二区三区av片| 一区二区在线免费观看| 国产精品天堂蜜av在线播放| 国产一区二区不卡视频| 亚洲激情不卡| 羞羞视频网站在线免费观看| 欧美精品日韩三级| 精品一区二区三区蜜桃| 黄网站免费在线观看| 国产精品视频一| 中文字幕欧美激情| 国产精品一区二区三区www| 美女在线免费视频| 亚洲精品国产品国语在线| 国产麻豆综合| 伦xxxx在线| 极品日韩久久| 在线播放视频一区| 亚洲激情亚洲| 国产黄色免费在线观看| 亚洲在线一区二区| 色综合色综合色综合色综合色综合 | 麻豆tv入口在线看| 欧美日韩国产综合视频在线观看| 精品freesex老太交| 丰满少妇又爽又紧又丰满69| 精品福利在线视频| 成人嫩草影院| 香蕉视频在线观看免费| 国产日韩在线亚洲字幕中文| 亚洲成人福利片| 欧美日韩一区二区三区视频播放| 成人黄动漫网站| 国产精品美女999| 亚洲综合久久久久| 国际精品欧美精品| 亚洲无限乱码一二三四麻| 精品欧美久久久| 奇米亚洲午夜久久精品| 国产在线88av| 热久久免费视频精品| 亚洲精品水蜜桃| 97精品国产| 久热国产在线| 日本特级黄色大片| 在线观看精品自拍私拍| 91免费观看国产| 国产精品sss在线观看av| 天堂在线看视频| 成人免费视频网站入口| 日韩精品一区二区三区三区免费| 成人黄色在线| 999在线观看免费大全电视剧| 2021av在线| 久久成年人免费电影| 久久精品视频一区二区| 国产精品调教视频| 在线黄色.com| 免费久久99精品国产自| 裸体一区二区| 中日韩高清电影网| 天天做天天爱天天高潮| 久久久精品网站| 一区二区三区免费观看| 欧美日韩爆操| 亚洲成a人片| 国产成人午夜电影| 久久久久高清| 久久精品男人天堂| 欧美日韩亚洲系列| 国内不卡的二区三区中文字幕| 3d黄动漫网站| 99国产高清| 亚洲图片在区色| 亚洲国产精品久久久男人的天堂 | 久操手机在线视频| 97久久精品视频| 欧日韩精品视频| 精品在线免费观看| 日本午夜精品| 午夜成年人在线免费视频| 国产精品第8页| 日韩一二三区视频| 久久久不卡影院| 99国产一区| 免费观看亚洲天堂| chinese偷拍一区二区三区| 欧美变态另类刺激| 成人激情av| 久久91精品国产91久久跳| 日韩欧美极品在线观看| 99久久99久久精品免费观看 | 日日欢夜夜爽一区| 天堂中文在线资| 穿情趣内衣被c到高潮视频| 国产精品精品视频| 永久555www成人免费|