Lập trình ứng dụng desktop bằng Python

Trong quá trình học lập trình với ngôn ngữ Python, rất nhiều người quan tâm tới việc tạo các ứng dụng có giao diện như Windows Form. Hôm nay VniTeach sẽ hướng dẫn các bạn cách đơn giản và nhanh chóng để tạo ra các ứng dụng có giao diện với PyQt5 và Qt Designer trong Python.

Qt Designer là gì?

Qt Designer là một công cụ để nhanh chóng xây dựng giao diện người dùng đồ họa với các widget từ khung Qt GUI . Nó cung cấp cho bạn một giao diện kéo và thả đơn giản để bố trí các thành phần như nút, trường văn bản, hộp tổ hợp và hơn thế nữa. Đây là ảnh chụp màn hình của Qt Designer trên Windows:

Giao diện của phần mềm Qt Designer

Qt Designer tạo ra .ui các tệp. Đây là một định dạng dựa trên XML đặc biệt để lưu trữ các widget của bạn dưới dạng cây. Bạn có thể tải các tệp này trong thời gian chạy hoặc dịch chúng sang ngôn ngữ lập trình như C ++ hoặc Python.

Qt Designer và Python

Nhiều người thích sử dụng Qt Designer cùng với Python vì nó là một ngôn ngữ động có lợi cho việc tạo mẫu nhanh.

Cách dễ nhất để kết hợp Qt Designer và Python là thông qua liên kết PyQt . Để cài đặt PyQt, chỉ cần nhập nội dung sau vào dòng lệnh:

python3 -m venv venv
source venv/bin/activate # or "call venv\Scripts\activate.bat" on Windows
python3 -m pip install PyQt5

PyQt5 là gì

– Qt là một Application framework đa nền tảng viết trên ngôn ngữ C++ , được dùng để phát triển các ứng dụng trên desktop, hệ thống nhúng và mobile. Hỗ trợ cho các platform bao gồm : Linux, OS X, Windows, VxWorks, QNX, Android, iOS, BlackBerry, Sailfish OS và một số platform khác. PyQt là Python interface của Qt, kết hợp của ngôn ngữ lập trình Python và thư viện Qt, là một thư viện bao gồm các thành phần giao diện điều khiển [widgets , graphical control elements].

– PyQt API bao gồm các module bao gồm số lượng lớn với các classes và functions hỗ trợ cho việc thiết kế ra các giao diện giao tiếp với người dùng của các phần mềm chức năng. Hỗ trợ với Python 2.x và 3.x.

– PyQt được phát triển bởi Riverbank Computing Limited, version mới nhất của PyQt có thể download tại đường link :  PyQt Riverbank Computing Limited

– Các class của PyQt5 được chia thành các module, bao gồm:
+ QtCore : là module bao gồm phần lõi không thuộc chức năng GUI, ví dụ dùng để làm việc với thời gian, file và thư mục, các loại dữ liệu, streams, URLs, mime type, threads hoặc processes.
+ QtGui : bao gồm các class dùng cho việc lập trình giao diện [windowing system integration], event handling, 2D graphics, basic imaging, fonts và text.
+ QtWidgets : bao gồm các class cho widget, ví dụ : button, hộp thoại, … được sử dụng để tạo nên giao diện người dùng cơ bản nhất.
+ QtMultimedia : thư viện cho việc sử dụng âm thanh, hình ảnh, camera,… 
+ QtBluetooth : bao gồm các class giúp tìm kiếm và kết nối với các thiết bị có giao tiếp với phần mềm.
+ QtNetwork : bao gồm các class dùng cho việc lập trình mạng, hỗ trợ lập trình TCP/IP và UDP client , server hỗ trợ việc lập trình mạng.
+ QtPositioning : bao gồm các class giúp việc hỗ trợ xác định vị.
+ Enginio : module giúp các client truy cập các Cloud Services của Qt.
+ QtWebSockets : cung cấp các công cụ cho WebSocket protocol.
+ QtWebKit : cung cấp các class dùng cho làm việc với các trình duyệt Web , dựa trên thư viện WebKit2.
+ QtWebKitWidgets : các widget cho WebKit.
+ QtXml : các class dùng cho làm việc với XML file.
+ QtSvg : dùng cho hiển thị các thành phần của SVG file.
+ QtSql : cung cấp các class dùng cho việc làm việc với dữ liệu.
+ QtTest : cung cấp các công cụ cho phép test các đơn vị của ứng dụng với PyQt5.

Giả sử bạn đã lưu tệp của mình từ Qt Designer dưới dạng dialog.ui. Sau đó, bạn có thể tạo một tệp khác, chẳng hạn như main.py, với nội dung sau:

Cách 1:

from PyQt5 import uic
from PyQt5.QtWidgets import QApplication

Form, Window = uic.loadUiType["dialog.ui"]

app = QApplication[[]]
window = Window[]
form = Form[]
form.setupUi[window]
window.show[]
app.exec[]

Cách 2:

from PyQt5 import QtWidgets, uic
import sys

class Ui[QtWidgets.QMainWindow]:
    def __init__[self]:
        super[Ui, self].__init__[]
        uic.loadUi['dialog.ui', self]
        self.show[]

app = QtWidgets.QApplication[sys.argv]
window = Ui[]
app.exec_[]

Sau đó, khi bạn gọi python main.py trên dòng lệnh, hộp thoại của bạn sẽ mở ra:

Giao diện một cửa sổ

Ngoài ra các bạn cũng có thể chuyển đổi từ tệp .ui [tệp giao diện người dùng] sang tệp .py [tệp Python] bằng câu lệnh trên Terminal như sau:

Python GUI: Giao diện đồ hoạ là một phần không thể thiếu khi nói về lập trình. Dù học ngôn ngữ lập trình nào, người ta cũng nghĩ tới chuyện "làm sao để có giao diện đồ hoạ".

Python GUI: 06 thư viện làm app giao diện người dùng với Python tốt nhất

GUI Python là gì?

Python GUI [Python Graphic User Interface] hay còn gọi là Giao diện đồ hoạ vốn từng là một phần không thể thiếu khi nói về lập trình. Dù học ngôn ngữ lập trình nào, người ta cũng nghĩ tới chuyện "làm sao để có giao diện đồ hoạ".

Tuy nhiên khi thời đại tất cả mọi thứ đều chuyển lên web, thì web/app mobile trở thành giao diện để tương tác với người dùng, chứ không phải các phần mềm có giao diện chạy trên máy tính như trước kia.

Giờ đây mọi người đều có thể nghe nhạc trên web, xem film trên web, chơi game trên web, soạn thảo văn bản trên web… khó còn ứng dụng nào không đưa lên web nữa. Vậy nên về mặt "sự nghiệp", có vẻ như bạn nên đầu tư vào kỹ năng làm web thay vì học để tạo một app trên desktop như cách đây chục năm.

Dĩ nhiên, GUI không ngay lập tức biến mất, vẫn có nhu cầu sử dụng, vẫn có người dùng, vẫn có hàng tá thư viện đồ hoạ tồn tại từ lâu [và vẫn tiếp tục phát triển], vẫn có những game mà chỉ chơi được trên máy tính do yêu cầu về hiệu năng mà web không đáp ứng nổi [như Half-Life/ đế chế / đua xe …].

Những thư viện tốt nhất trong Python GUI

Thư viện Tkinter

Tkinter thường được đóng gói với Python, và nó là Python GUI Framework tiêu chuẩn của Python. Nó phổ biến vì sự đơn giản và giao diện người dùng đồ họa, mã nguồn mở và có sẵn theo Python License.

Một trong những ưu điểm của việc chọn Tkinter là vì nó được cung cấp theo Python mặc định, nên có rất nhiều tài nguyên, cả code và sách tham khảo dành cho người mới.

Ngoài ra, với cộng đồng lâu đời và năng động, có nhiều người có thể sẵn sàng giúp bạn trong trường hợp bạn mới bắt đầu học, rất nhiều lỗi bạn có thể tìm ra cách sửa chữa ngay lập tức.
Link tải framework Tkinter

Thư viện Kivy

Kivy là một Python GUI Framework tăng tốc OpenGL ES 2 để tạo giao diện người dùng mới. Kivy chạy trên Linux, Windows, OS X, Android, iOS và Raspberry Pi. Bạn có thể chạy cùng một mã nguồn trên tất cả các nền tảng được hỗ trợ.

Nó có thể sử dụng nguyên bản hầu hết các đầu vào, giao thức và thiết bị bao gồm WM_Touch, WM_Pen, Mac OS X Trackpad và Magic Mouse, Mtdev, Linux Kernel HID, TUIO. Một mô phỏng chuột cảm ứng đa điểm.


Kivy được sử dụng miễn phí 100%, theo giấy phép MIT [bắt đầu từ 1.7.2] và LGPL 3 cho các phiên bản trước. Bộ công cụ được phát triển, hỗ trợ chuyên nghiệp. Bạn có thể sử dụng nó trong một sản phẩm thương mại.
Framework Kivy ổn định và có tài liệu API tốt, cùng với hướng dẫn lập trình kèm theo để giúp bạn bắt đầu nhanh chóng.
Link tải framework

Thư viện Qt

Qt là một trong những ràng buộc Python đa nền tảng được ưa chuộng triển khai thư viện Qt cho Framework Python GUI phát triển ứng dụng Qt [thuộc sở hữu của Nokia].

Hiện tại, Qt có sẵn cho Unix / Linux, Windows, Mac OS X và Sharp Zaurus. Nó kết hợp những gì tốt nhất của Python và Qt và tùy thuộc vào từng lập trình viên để quyết định tạo một chương trình bằng cách viết code hay sử dụng Qt Designer để tạo các hộp thoại trực quan.

Qt có sẵn trong cả giấy phép thương mại cũng như GPL. Mặc dù một số tính năng có thể không có trong phiên bản miễn phí, nhưng nếu ứng dụng của bạn là mã nguồn mở thì bạn có thể sử dụng nó theo giấy phép miễn phí.
Link tải framework Qt

Thư viện WxPython

WxPython là một trình bao bọc mã nguồn mở cho thư viện Python GUI đa nền tảng WxWidgets [trước đó được gọi là WxWindows] và được triển khai như một mô-đun mở rộng Python.

Với WxPython, bạn có thể tạo các ứng dụng gốc cho Windows, Mac OS và Unix.

Tham khảo thêm cách cài đặt python trên Windows, Mac OS và Unix..

Nếu bạn mới bắt đầu phát triển các ứng dụng trong thư viện WxPython, đây là một hướng dẫn đơn giản mà bạn có thể tham khảo: //zetcode.com/wxpython/
Link tải framework WxPython

Thư viện Pyside

PySide là một dự án phần mềm mã nguồn mở cung cấp các ràng buộc Python cho Qt Framework.

Qt là một ứng dụng đa nền tảng và Python GUI Framework, cho phép các lập trình viên viết ứng dụng một lần và triển khai chúng trên nhiều hệ điều hành mà không cần viết lại mã nguồn.

Trong khi Python là một ngôn ngữ lập trình hiện đại, năng động với một cộng đồng lập trình viên khổng lồ. Kết hợp sức mạnh của Qt và Python, PySide cung cấp Qt Framework phong phú cho các lập trình viên sử dụng Python phát triển ứng dụng GUI nhanh chóng trên tất cả các hệ điều hành chính.
Link tải framework Pyside

PyGUI

PyGUI là một Python GUI Framework đa nền tảng ứng cho Unix, Macintosh và Windows. So với một số GUI Framework khác, cho đến nay, PyGUI là đơn giản nhất và nhẹ nhất, vì API hoàn toàn đồng bộ với Python.

PyGUI chèn rất ít code giữa nền tảng GUI và ứng dụng Python, do đó giao diện của ứng dụng thường hiển thị GUI tự nhiên của nền tảng.
Link tải framework PyGUI

Tổng kết
Trên đây là 6 Python GUI Framework để người dùng Python có thể làm app giao diện một cách hiệu quả và nhanh chóng nhất. Bạn có thể lựa chọn bất kỳ thư viện nào phù hợp với mục đích của bạn để xây dựng một app giao diện hoàn chỉnh. Chúc các bạn hoàn thành được một app giao diện hoàn chỉnh của riêng mình.

Các thư viện trong python

Bạn cũng có thể tham khảo thêm về khoá học Python cơ bản đến nâng cao tại MCI để tìm cho mình lộ trình học hiệu quả hơn nhé.

Chủ Đề