GUI Python đẹp

Python là một chương trình phổ biến được sử dụng cho mọi thứ, từ viết kịch bản các tác vụ thông thường đến xây dựng trang web và thực hiện phân tích dữ liệu phức tạp. Mặc dù bạn có thể hoàn thành rất nhiều việc với các công cụ dòng lệnh, nhưng một số tác vụ phù hợp hơn với giao diện đồ họa. Bạn cũng có thể thấy mình muốn xây dựng giao diện người dùng máy tính để bàn cho một công cụ hiện có để cải thiện khả năng sử dụng cho người dùng không có kỹ thuật. Hoặc có thể bạn đang xây dựng một số phần cứng hoặc ứng dụng dành cho thiết bị di động và muốn có giao diện màn hình cảm ứng trực quan

Để tạo giao diện người dùng đồ họa với Python, bạn cần có thư viện GUI. Thật không may, tại thời điểm này, mọi thứ trở nên khá khó hiểu -- có rất nhiều thư viện GUI khác nhau có sẵn cho Python, tất cả đều có các khả năng và giấy phép khác nhau. Bạn nên sử dụng thư viện GUI Python nào cho dự án của mình?

Trong bài viết này, chúng ta sẽ xem xét lựa chọn các khung GUI Python phổ biến nhất hiện có và lý do bạn nên cân nhắc sử dụng chúng cho các dự án của riêng mình. Bạn sẽ tìm hiểu về các điểm mạnh tương đối của từng thư viện, hiểu các giới hạn cấp phép và xem Hello, World đơn giản. ứng dụng được viết trong mỗi. Đến cuối bài viết, bạn sẽ cảm thấy tự tin khi chọn đúng thư viện cho dự án của mình

tkinter

Tốt nhất cho GUI công cụ đơn giản, ứng dụng di động nhỏ

Tkinter là khung GUI defacto cho Python. Nó đi kèm với Python trên cả Windows và macOS. [Trên Linux, nó có thể yêu cầu tải xuống gói bổ sung từ kho lưu trữ bản phân phối của bạn. ] Tkinter là một trình bao bọc được viết xung quanh bộ công cụ Tk GUI. Tên của nó là sự kết hợp của các từ Tk và Giao diện

Tkinter là một thư viện đơn giản hỗ trợ các bố cục và tiện ích tiêu chuẩn, cũng như các tiện ích phức tạp hơn như chế độ xem theo tab & thanh tiến trình. Tkinter là một thư viện GUI thuần túy, không phải là một khung. Không có hỗ trợ tích hợp cho GUI được điều khiển từ nguồn dữ liệu, cơ sở dữ liệu hoặc để hiển thị hoặc thao tác đa phương tiện hoặc phần cứng. Tuy nhiên, nếu bạn cần làm một cái gì đó đơn giản mà không yêu cầu bất kỳ phụ thuộc bổ sung nào, Tkinter có thể là thứ bạn đang tìm kiếm. Tkinter là đa nền tảng tuy nhiên các widget có thể lỗi thời, đặc biệt là trên Windows

Cài đặt Đã được cài đặt với Python trên Windows và macOS. Ubuntu/Debian Linux

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
3

Một ứng dụng hello world đơn giản trong Tkinter được hiển thị bên dưới

  • Tiêu chuẩn
  • dựa trên lớp

trăn

import tkinter as tk

window = tk.Tk[]
window.title["Hello World"]


def handle_button_press[event]:
    window.destroy[]


button = tk.Button[text="My simple app."]
button.bind["", handle_button_press]
button.pack[]

# Start the event loop.
window.mainloop[]

trăn

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]

Ứng dụng Hello world được xây dựng bằng Tkinter, chạy trên Windows 11

Tkinter ban đầu được phát triển bởi Steen Lumholt và Guido Van Rossum, người đã tự thiết kế Python. Cả khung GUI và ngôn ngữ đều được cấp phép theo cùng Giấy phép Python Software Foundation [PSF]. Mặc dù giấy phép tương thích với GPL, nhưng đó là giấy phép 'dễ dãi' [tương tự như Giấy phép MIT] cho phép nó được sử dụng cho các ứng dụng và sửa đổi độc quyền

  • hướng dẫn tkinter
  • Tài liệu Tkinter

PyQt hoặc PySide

Tốt nhất cho các ứng dụng máy tính để bàn, phần mềm đa phương tiện, khoa học và kỹ thuật

PyQt và PySide là các trình bao bọc xung quanh khung Qt. Chúng cho phép bạn dễ dàng tạo các giao diện hiện đại trông giống như ở nhà trên mọi nền tảng, bao gồm Windows, macOS, Linux và thậm chí cả Android. Họ cũng có công cụ vững chắc với công cụ đáng chú ý nhất là Qt Creator, bao gồm trình chỉnh sửa WYSIWYG để thiết kế giao diện GUI một cách nhanh chóng và dễ dàng. Được hỗ trợ bởi một dự án thương mại có nghĩa là bạn sẽ tìm thấy nhiều hỗ trợ và tài nguyên học tập trực tuyến để giúp bạn phát triển ứng dụng của mình

Qt [và theo phần mở rộng PyQt & PySide] không chỉ là một thư viện GUI mà còn là một khung phát triển ứng dụng hoàn chỉnh. Ngoài các phần tử giao diện người dùng tiêu chuẩn, chẳng hạn như tiện ích con và bố cục, Qt cung cấp các chế độ xem dựa trên dữ liệu giống như MVC [bảng tính, bảng], giao diện cơ sở dữ liệu & mô hình, vẽ đồ thị, trực quan hóa đồ họa vector, phát lại đa phương tiện, hiệu ứng âm thanh & danh sách phát và tích hợp . Các mô hình khe và tín hiệu Qt cho phép xây dựng các ứng dụng lớn từ các thành phần biệt lập và có thể tái sử dụng

Mặc dù các bộ công cụ khác có thể hoạt động hiệu quả khi xây dựng các công cụ nhỏ và đơn giản, nhưng Qt thực sự là của riêng nó để xây dựng các ứng dụng chất lượng thương mại thực sự, nơi bạn sẽ được hưởng lợi từ các thành phần dựng sẵn. Điều này phải trả giá bằng một đường cong học tập nhỏ. Tuy nhiên, đối với các dự án nhỏ hơn, Qt không thực sự phức tạp hơn các thư viện khác. Các ứng dụng dựa trên Widget Qt sử dụng các widget gốc của nền tảng để đảm bảo chúng trông giống như ở nhà trên máy tính để bàn Windows, macOS và Qt dựa trên Linux

Cài đặt

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
4 hoặc
from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
5

Một ứng dụng hello world đơn giản trong PyQt6, sử dụng API Qt Widgets được hiển thị bên dưới

  • PyQt6
  • PySide6

trăn

from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]

trăn

from PySide6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]

Như bạn có thể thấy, mã giữa PyQt & PySide gần như giống hệt nhau, vì vậy không có gì đáng lo ngại khi bạn bắt đầu phát triển với cả hai. bạn luôn có thể di chuyển dễ dàng nếu bạn cần

Ứng dụng Hello world được xây dựng bằng PyQt6, chạy trên Windows 11

Trước khi Công ty Qt [thuộc Nokia] phát hành thư viện PySide được hỗ trợ chính thức vào năm 2009, Riverbank Computing đã phát hành PyQt vào năm 1998. Sự khác biệt chính giữa hai thư viện này là cấp phép. Phiên bản sử dụng miễn phí của PyQt được cấp phép theo Giấy phép Công cộng Chung GNU [GPL] v3 nhưng PySide được cấp phép theo Giấy phép Công cộng Ít hơn của GNU [LGPL]. Điều này có nghĩa là PyQt bị giới hạn trong các ứng dụng được cấp phép GPL trừ khi bạn mua phiên bản thương mại của nó, trong khi PySide có thể được sử dụng trong các ứng dụng không phải GPL mà không phải trả thêm phí. Tuy nhiên, lưu ý rằng cả hai thư viện này đều tách biệt với chính Qt, phiên bản này cũng có phiên bản nguồn mở, miễn phí sử dụng và phiên bản thương mại, trả phí

Để biết thêm thông tin, hãy xem bài viết của chúng tôi về cấp phép PyQt và PySide

  • PyQt6

    • Sách PyQt6
    • Hướng dẫn PyQt6
    • Trang web PyQt
    • Tài liệu PyQt6
  • PySide6

    • Sách PySide6
    • Hướng dẫn PySide6
    • Trang web PySide
    • Tài liệu PySide
    • Kho lưu trữ GitHub
  • PyQt5

    • Sách PyQt5
    • Hướng dẫn PyQt5
    • Tài liệu PyQt6

PyQt/PySide với QML

Tốt nhất cho Raspberry Pi, vi điều khiển, điện tử công nghiệp và tiêu dùng

Khi sử dụng PyQt và PySide, bạn thực sự có hai tùy chọn để xây dựng GUI của mình. Chúng tôi đã giới thiệu API Qt Widgets rất phù hợp để xây dựng các ứng dụng dành cho máy tính để bàn. Nhưng Qt cũng cung cấp API khai báo ở dạng Qt Quick/QML

Sử dụng Qt Quick/QML, bạn có quyền truy cập vào toàn bộ khung Qt để xây dựng ứng dụng của mình. Giao diện người dùng của bạn bao gồm hai phần. mã Python xử lý logic nghiệp vụ và QML xác định cấu trúc và hành vi của chính giao diện người dùng. Bạn có thể kiểm soát giao diện người dùng từ Python hoặc sử dụng mã Javascript được nhúng để xử lý các sự kiện và hoạt ảnh

Qt Quick/QML phù hợp lý tưởng để xây dựng giao diện màn hình cảm ứng hiện đại cho bộ vi điều khiển hoặc giao diện thiết bị -- ví dụ: xây dựng giao diện cho bộ vi điều khiển như Raspberry Pi. Tuy nhiên, bạn cũng có thể sử dụng nó trên máy tính để bàn để xây dựng trải nghiệm ứng dụng được tùy chỉnh hoàn toàn, giống như trải nghiệm bạn tìm thấy trong các ứng dụng trình phát đa phương tiện như Spotify hoặc trò chơi trên máy tính để bàn

Cài đặt

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
4 hoặc
from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
5

Một ứng dụng Hello World đơn giản trong PyQt6 với QML. Lưu tệp QML trong cùng thư mục với tệp Python và chạy như bình thường

  • chủ yếu. py
  • chủ yếu. qml

trăn

import sys

from PyQt6.QtGui import QGuiApplication
from PyQt6.QtQml import QQmlApplicationEngine


app = QGuiApplication[sys.argv]

engine = QQmlApplicationEngine[]
engine.quit.connect[app.quit]
engine.load['main.qml']

sys.exit[app.exec[]]

qml

import QtQuick 2.15
import QtQuick.Controls 2.15

ApplicationWindow {
    visible: true
    width: 600
    height: 500
    title: "HelloApp"

    Text {
        anchors.centerIn: parent
        text: "Hello World"
        font.pixelSize: 24
    }

}

Cấp phép cho ứng dụng Qt Quick/QML cũng giống như cấp phép cho các ứng dụng PyQt/PySide khác

  • PyQt

    • Hướng dẫn QML/PyQt5
    • Hướng dẫn QML/PyQt6
    • Trang web PyQt
    • Tài liệu PyQt6
  • PySide

    • Hướng dẫn QML/PySide2
    • Hướng dẫn QML/PySide6
    • Trang web PySide
    • Tài liệu PySide
    • Kho lưu trữ GitHub

Ứng dụng Hello world được xây dựng bằng PyQt6 & QML, chạy trên Windows 11

kivy

Tốt nhất để phát triển ứng dụng di động Python

Trong khi hầu hết các khung GUI khác là các ràng buộc với bộ công cụ được viết bằng các ngôn ngữ lập trình khác, Kivy có lẽ là khung duy nhất được viết chủ yếu bằng Python thuần túy. Nếu bạn muốn tạo giao diện định hướng màn hình cảm ứng, tập trung vào các nền tảng di động như Android và iOS, thì đây là cách phù hợp. Điều này cũng chạy trên các nền tảng máy tính để bàn [Windows, macOS, Linux] nhưng lưu ý rằng ứng dụng của bạn có thể không có giao diện và hoạt động giống như một ứng dụng gốc. Tuy nhiên, có một cộng đồng khá lớn xung quanh framework này và bạn có thể dễ dàng tìm thấy các tài nguyên để giúp bạn tìm hiểu nó trực tuyến.

Giao diện của Kivy cực kỳ tùy biến, cho phép nó được sử dụng thay thế cho các thư viện như Pygame [để tạo trò chơi bằng Python]. Các nhà phát triển cũng đã phát hành một số thư viện riêng cho Kivy. Một số cung cấp cho Kivy khả năng tích hợp và truy cập tốt hơn vào một số tính năng dành riêng cho nền tảng hoặc giúp đóng gói ứng dụng của bạn để phân phối trên các nền tảng như Android và iOS. Kivy có ngôn ngữ thiết kế riêng gọi là Kv, tương tự như QML cho Qt. Nó cho phép bạn dễ dàng tách thiết kế giao diện khỏi logic ứng dụng của bạn

Có một tiện ích bổ sung của bên thứ 3 dành cho Kivy tên là KivyMD thay thế các tiện ích của Kivy bằng các tiện ích phù hợp với Thiết kế Vật liệu của Google

Một ứng dụng hello world đơn giản trong Kivy được hiển thị bên dưới

Cài đặt

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
8

Một ứng dụng hello world đơn giản trong Kivy được hiển thị bên dưới

trăn

from kivy.app import App
from kivy.uix.boxlayout import BoxLayout
from kivy.uix.button import Button
from kivy.core.window import Window

Window.size = [300, 200]


class MainWindow[BoxLayout]:
    def __init__[self]:
        super[].__init__[]
        self.button = Button[text="Hello, World?"]
        self.button.bind[on_press=self.handle_button_clicked]

        self.add_widget[button]

    def handle_button_clicked[self, event]:
        self.button.text = "Hello, World!"


class MyApp[App]:
    def build[self]:
        self.title = "Hello, World!"
        return MainWindow[]


app = MyApp[]
app.run[]

Ứng dụng Hello world được xây dựng bằng Kivy, chạy trên Windows 11

Một ứng dụng tương đương được xây dựng bằng ngôn ngữ khai báo Kv được hiển thị bên dưới

  • chủ yếu. py
  • bộ điều khiển. kv

trăn

import kivy
kivy.require['1.0.5']

from kivy.uix.floatlayout import FloatLayout
from kivy.app import App
from kivy.properties import ObjectProperty, StringProperty


class Controller[FloatLayout]:
    '''Create a controller that receives a custom widget from the kv lang file.

    Add an action to be called from the kv lang file.
    '''
    def button_pressed[self]:
        self.button_wid.text = 'Hello, World!'


class ControllerApp[App]:

    def build[self]:
        return Controller[]


if __name__ == '__main__':
    ControllerApp[].run[]

trăn

#:kivy 1.0

:
    button_wid: custom_button

    BoxLayout:
        orientation: 'vertical'
        padding: 20

        Button:
            id: custom_button
            text: 'Hello, World?'
            on_press: root.button_pressed[]

Tên của tệp Kv phải khớp với tên của lớp từ ứng dụng chính -- ở đây

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
9 và
from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]
0

Ứng dụng Hello world được xây dựng bằng Kivy + Kv, chạy trên Windows 11

Vào tháng 2 năm 2011, Kivy đã được phát hành với tư cách là người kế thừa tinh thần cho một khung tương tự có tên là PyMT. Mặc dù họ đã chia sẻ các mục tiêu tương tự và cũng được dẫn dắt bởi các nhà phát triển cốt lõi hiện tại của Kivy, nhưng điểm khác biệt của Kivy là ở thiết kế cơ bản và một tổ chức chuyên nghiệp tích cực phát triển và duy trì nó. Kivy được cấp phép theo giấy phép MIT, đây là giấy phép 'dễ dãi' cho phép bạn sử dụng nó một cách tự do trong cả ứng dụng nguồn mở và ứng dụng độc quyền. Như vậy, bạn thậm chí được phép thực hiện các sửa đổi độc quyền đối với chính khung đó

  • Trang web Kivy
  • Tài liệu Kivy
  • Kho lưu trữ GitHub
  • Tài liệu KivyMD
  • Tài liệu ngôn ngữ Kv

PySimpleGUI

Tốt nhất để xây dựng nhanh giao diện người dùng cho các công cụ đơn giản, rất di động

PySimpleGUI nhằm mục đích đơn giản hóa việc phát triển ứng dụng GUI cho Python. Nó không phát minh lại bánh xe nhưng cung cấp một trình bao bọc xung quanh các khung hiện có khác như Tkinter, Qt [PySide 2], WxPython và Remi. Bằng cách đó, nó không chỉ hạ thấp rào cản trong việc tạo GUI mà còn cho phép bạn dễ dàng di chuyển từ khung GUI này sang khung GUI khác bằng cách thay đổi câu lệnh nhập. Mặc dù có một cổng PySimpleGUI riêng cho mỗi khung này, phiên bản Tkinter được coi là tính năng hoàn chỉnh nhất với phiên bản Qt sắp ra mắt ở vị trí thứ hai. Tại thời điểm viết bài, các cổng khác ít nhiều vẫn đang trong quá trình hoàn thiện

Có khá nhiều tài nguyên tốt để giúp bạn học cách sử dụng PySimpleGUI, bao gồm Sách dạy nấu ăn chính thức và khóa học Udemy do chính các nhà phát triển cung cấp. Theo trang web dự án của họ, PySimpleGUI ban đầu được tạo [và sau đó được phát hành vào năm 2018] vì nhà phát triển chính muốn có khung GUI 'đơn giản hóa' để sử dụng trong dự án sắp tới của anh ấy và không thể tìm thấy bất kỳ thứ gì đáp ứng nhu cầu của anh ấy

Cài đặt

from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]
1

trăn

import PySimpleGUI as sg


layout = [
    [sg.Button["My simple app."]]
]

window = sg.Window["Hello World", layout]

while True:
    event, values = window.read[]
    print[event, values]
    if event == sg.WIN_CLOSED or event == "My simple app.":
        break

window.close[]

Ứng dụng Hello world được xây dựng bằng PySimpleGUI, chạy trên Windows 11

PySimpleGUI được cấp phép theo cùng giấy phép LGPL v3 như PySide, cho phép sử dụng nó trong các ứng dụng độc quyền nhưng các sửa đổi đối với chính khung phải được phát hành dưới dạng mã nguồn mở

  • Trang web PySimpleGUI
  • Sách dạy nấu ăn PySimpleGUI
  • Kho lưu trữ GitHub

Hơn 10.000 nhà phát triển đã mua Tạo ứng dụng GUI bằng Python & Qt

Thông tin thêm Nhận sách

[[ giảm giá. discount_pc ]]% GIẢM GIÁ cho [[giảm giá. mô tả ]] với mã [[ giảm giá. coupon_code ]]

WxPython

Tốt nhất cho các ứng dụng máy tính để bàn di động đơn giản

WxPython là một trình bao bọc cho bộ công cụ GUI đa nền tảng, phổ biến có tên là WxWidgets. Nó được triển khai dưới dạng một tập hợp các mô-đun mở rộng Python bao bọc các thành phần GUI của thư viện đa nền tảng phổ biến wxWidgets, được viết bằng C++

WxPython sử dụng các tiện ích gốc trên hầu hết các nền tảng, đảm bảo rằng ứng dụng của bạn trông giống như ở nhà. Tuy nhiên, WxPython được biết là có một số điểm đặc biệt dành riêng cho nền tảng và nó cũng không cung cấp cùng mức độ trừu tượng giữa các nền tảng như Qt chẳng hạn. Điều này có thể ảnh hưởng đến mức độ dễ dàng duy trì khả năng tương thích đa nền tảng cho ứng dụng của bạn

WxPython đang được phát triển tích cực và hiện cũng đang được triển khai lại từ đầu với tên 'WxPython Phoenix'. Nhóm đằng sau WxWidgets cũng chịu trách nhiệm về WxPython, được phát hành lần đầu vào năm 1998

Cài đặt

from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]
2

trăn

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
0

Ứng dụng Hello world được xây dựng bằng WxPython, chạy trên Windows 11

Cả WxWidgets và WxPython đều được cấp phép theo Giấy phép Thư viện WxWindows, đây là giấy phép 'phần mềm miễn phí' tương tự như LGPL [với một ngoại lệ đặc biệt]. Nó cho phép cả ứng dụng nguồn mở và độc quyền sử dụng và sửa đổi WxPython

  • Trang web WxPython
  • Wiki WxPython
  • Kho lưu trữ GitHub

PyGObject [GTK+]

Tốt nhất để phát triển ứng dụng cho máy tính để bàn Gnome

Nếu bạn có ý định tạo một ứng dụng tích hợp tốt với GNOME và các môi trường máy tính để bàn dựa trên GTK khác cho Linux, thì PyGObject là lựa chọn phù hợp. Bản thân PyGObject là ngôn ngữ ràng buộc với bộ công cụ tiện ích GTK+. Nó cho phép bạn tạo các giao diện người dùng thích ứng, hiện đại phù hợp với Nguyên tắc Giao diện Con người [HIG] của GNOME

Nó cũng cho phép phát triển các ứng dụng 'hội tụ' có thể chạy trên cả nền tảng di động và máy tính để bàn Linux. Có một số công cụ của bên thứ nhất và bên thứ ba do cộng đồng tạo ra cũng có sẵn cho nó. Điều này bao gồm những thứ như Trình tạo Gnome và Glade, một trình soạn thảo WYSIWYG khác để xây dựng giao diện đồ họa một cách nhanh chóng và dễ dàng

Thật không may, không có nhiều tài nguyên trực tuyến để giúp bạn tìm hiểu cách phát triển ứng dụng PyGObject, ngoại trừ tài liệu hướng dẫn khá đầy đủ này. Mặc dù hỗ trợ đa nền tảng tồn tại [e. g. Inkscape, GIMP], các ứng dụng kết quả sẽ không cảm thấy hoàn toàn tự nhiên trên các máy tính để bàn khác. Thiết lập môi trường phát triển cho điều này, đặc biệt là trên Windows và macOS, cũng cần nhiều bước hơn so với hầu hết các khung khác trong bài viết này, chỉ cần cài đặt Python hoạt động

Cài đặt Ubuntu/Debian

from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]
3, macOS Homebrew
from PyQt6.QtWidgets import QMainWindow, QApplication, QPushButton

import sys


class MainWindow[QMainWindow]:
    def __init__[self]:
        super[].__init__[]

        self.setWindowTitle["Hello World"]

        button = QPushButton["My simple app."]
        button.pressed.connect[self.close]

        self.setCentralWidget[button]
        self.show[]


app = QApplication[sys.argv]
w = MainWindow[]
app.exec[]
4

trăn

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
1

Ứng dụng Hello world được xây dựng bằng PyGObject, chạy trên Ubuntu Linux 21. 10

PyGObject được phát triển và duy trì dưới sự quản lý của GNOME Foundation, tổ chức cũng chịu trách nhiệm về môi trường máy tính để bàn GNOME. PyGObject thay thế một số mô-đun Python riêng biệt, bao gồm PyGTK, GIO và python-gnome, trước đây được yêu cầu để tạo một ứng dụng GNOME/GTK đầy đủ. Bản phát hành đầu tiên của nó là vào năm 2006 và nó được cấp phép theo phiên bản cũ hơn của LGPL [v2. 1]. Mặc dù có một số khác biệt với phiên bản LGPL [v3] hiện tại, giấy phép vẫn cho phép sử dụng nó trong các ứng dụng độc quyền nhưng yêu cầu bất kỳ sửa đổi nào đối với bản thân thư viện để được phát hành dưới dạng mã nguồn mở

  • Trang chủ dự án PyGObject
  • Tài liệu PyGObject
  • Kho lưu trữ GitLab

Remi

Tốt nhất cho giao diện người dùng dựa trên web cho các ứng dụng Python

Remi, viết tắt của REMote Interface, là giải pháp lý tưởng cho các ứng dụng dự định chạy trên máy chủ và các thiết lập không đầu khác. [Ví dụ: trên Raspberry Pi. ] Không giống như hầu hết các khung/thư viện GUI khác, Remi được hiển thị hoàn toàn trong trình duyệt bằng máy chủ web tích hợp. Do đó, nó hoàn toàn độc lập với nền tảng và chạy tốt như nhau trên tất cả các nền tảng

Điều đó cũng làm cho giao diện của ứng dụng có thể truy cập được với bất kỳ máy tính hoặc thiết bị nào có trình duyệt web được kết nối với cùng một mạng. Mặc dù quyền truy cập có thể bị hạn chế bằng tên người dùng và mật khẩu nhưng nó không thực hiện bất kỳ chiến lược bảo mật nào theo mặc định. Lưu ý rằng Remi được dùng làm khung GUI trên máy tính để bàn chứ không phải để phục vụ các trang web. Nếu có nhiều người dùng kết nối với ứng dụng cùng một lúc, họ sẽ thấy và tương tác với những thứ giống hệt như khi một người dùng đang sử dụng ứng dụng đó

Remi không yêu cầu kiến ​​thức trước về HTML hoặc các công nghệ web tương tự khác. Bạn chỉ cần có hiểu biết về Python để sử dụng nó, sau đó nó sẽ tự động được dịch sang HTML. Nó cũng đi kèm với trình chỉnh sửa GUI kéo và thả tương tự như Qt Designer cho PyQt và PySide

trăn

from tkinter import Tk, Button


class Window[Tk]:
    def __init__[self]:
        super[].__init__[]

        self.title["Hello World"]

        self.button = Button[text="My simple app."]
        self.button.bind["", self.handle_button_press]
        self.button.pack[]

    def handle_button_press[self, event]:
        self.destroy[]


# Start the event loop.
window = Window[]
window.mainloop[]
2

Remi được cấp phép theo Giấy phép Apache v2. 0, là một giấy phép 'dễ dãi' khác tương tự như Giấy phép MIT. Giấy phép cho phép sử dụng nó trong cả ứng dụng nguồn mở và ứng dụng độc quyền, đồng thời cho phép thực hiện các sửa đổi độc quyền đối với chính khuôn khổ đó. Các điều kiện chính của nó xoay quanh việc bảo tồn các thông báo về bản quyền và giấy phép

Ứng dụng Hello world được xây dựng bằng Remi, chạy trên Chrome trên Windows 11

  • Kho lưu trữ GitHub
  • Reddit [r/RemiGUI]

Phần kết luận

Nếu bạn đang tìm cách xây dựng các ứng dụng GUI bằng Python, thì có thể có một khung/thư viện GUI được liệt kê ở đây phù hợp với hóa đơn cho dự án của bạn. Hãy thử và cân nhắc các khả năng và giấy phép của các thư viện khác nhau với quy mô dự án của bạn, cả hiện tại và trong tương lai

Đừng ngại thử nghiệm một chút với các thư viện khác nhau, để xem thư viện nào phù hợp nhất. Mặc dù API của các thư viện GUI rất khác nhau, nhưng chúng có chung nhiều khái niệm cơ bản và những điều bạn học được trong thư viện này sẽ thường được áp dụng trong thư viện khác

Bạn chỉ bị giới hạn bởi trí tưởng tượng của riêng bạn. Vì vậy, đi ra ngoài và làm một cái gì đó

Rất tốt, bạn đã hoàn thành hướng dẫn này. Đánh dấu là hoàn thành

[[ người dùng. hoàn thành. độ dài ]] đã hoàn thành [[ người dùng. vệt+1 ]] vệt ngày

Để có hướng dẫn đầy đủ về xây dựng ứng dụng GUI bằng Python, hãy xem hướng dẫn PyQt6 của chúng tôi. Sử dụng thư viện khác?

GUI Python nào trông đẹp nhất?

1– PyQt5 . PyQt5 là một khung GUI rất nổi tiếng được sử dụng bởi cả lập trình viên Python và nhà thiết kế giao diện người dùng. Một trong những thành phần của nó, gói PyQt, được xây dựng xung quanh khung Qt, đây là công cụ thiết kế GUI đa nền tảng hàng đầu cho bất kỳ loại ứng dụng nào.

Bạn có thể tạo một GUI đẹp bằng Python không?

Việc tạo giao diện người dùng đồ họa [GUI] đơn giản hoạt động trên nhiều nền tảng có thể phức tạp. Nhưng không nhất thiết phải như vậy. Bạn có thể sử dụng Python và gói PySimpleGUI để tạo giao diện người dùng đẹp mắt mà bạn và người dùng của bạn sẽ thích.

GUI nào dễ nhất trong Python?

Python Tkinter . Đó là một thư viện GUI Python nhanh và dễ sử dụng, khiến nó trở thành thư viện cần thiết để xây dựng ứng dụng GUI Python.

Tkinter có tốt cho GUI không?

Python cung cấp nhiều tùy chọn để phát triển GUI [Giao diện người dùng đồ họa]. Trong số tất cả các phương thức GUI, tkinter là phương thức được sử dụng phổ biến nhất . Nó là giao diện Python tiêu chuẩn cho bộ công cụ Tk GUI được cung cấp cùng với Python. Python với tkinter là cách nhanh nhất và dễ nhất để tạo các ứng dụng GUI.

Chủ Đề