Lập trình giao diện Python với PyQt5 và Qt Designer

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 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:

# To convert .ui file to .py using pyqt5 module
>> pyuic5 -x main.ui -o main.py # pyQt5 version
>> pyuic4 -x main.ui -o main.py # pyQt4 version

Tải về phần mềm Qt Designer tại đường dẫn sau: https://build-system.fman.io/qt-designer-download

Trả lời

Email của bạn sẽ không được hiển thị công khai. Các trường bắt buộc được đánh dấu *