Bài 7 : Lập trình giao diện với PyQt5 cho RaspberryPi - Phần 1

CHÚ Ý : Từ 2019 MLAB có thêm một website cho riêng Raspberry Pi và trở thành website chính về Raspberry Pi tại MLAB, các thông tin về sản phẩm - tin tức cập nhật về Raspberry Pi - Bài viết kỹ thuật hỗ trợ cho Raspberry Pi, ... MLAB cập nhật tại website : pivietnam.com.vn 

MLAB trân trọng thông báo tới quý khách hàng!!! 

Các bạn có thể tham khảo các bài viết hỗ trợ kỹ thuật và các tin tức mới nhất tại phần "tin tức"trên website PVIETNAM.COM.VN

Bài viết hỗ trợ kỹ thuật tại website PIVIETNAM.COM.VN - Bài 7: Lập trình giao diện với PyQt5 cho RaspberryPi - Phần 1(Link here)


Khi lập trình giao diện với Qt, người lập trình thường đặt ra vấn đề : làm sao có thể thiết kế giao diện trên PC và tạo file thực thi cho giao diện đó có thể chạy trên hệ điều hành Raspbian của Raspberry Pi. Vấn đề trên được gọi là biên dịch chéo chương trình cho Qt từ PC để thực hiện chạy trên Raspberry Pi, vấn đề này gây không ít khó khăn cho lập trình viên.

Chúng tôi xin giới thiệu một công cụ giúp thiết kế giao diện người dùng - phát triển trên Qt, mong giúp các lập trình viên có thể tránh được những khó khăn của việc thực hiện quá trình biên dịch chéo trên.

Qua Phần 1 này các bạn sẽ được giới thiệu về PyQt5 , một công cụ lập trình giao diện người dùng hỗ trợ cho hệ điều hành Raspbian trên Raspberry Pi.

Hướng dẫn cài đặt các công cụ phần mềm cần thiết cho việc lập trình với PyQt5.

1. Giới thiệu PyQt5

1.1. Giới thiệu chung

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

1.2. Giới thiệu các tool công cụ phần mềm phục vụ thiết kế với PyQt5

- Qt Designer : Qt sử dụng IDE tên Qt Creator với một tool thiết kế giao diện người dùng Qt Designer. Qt Designer có thể làm việc một mình độc lập với Qt Creator .

Qt Designer sử dụng XML .ui file  để lưu thiết kế và không sinh thêm bất kỳ mã nguồn nào của nó. User Interface Compiler (uic) đọc định dạng file XML (.ui) và xuất ra header file mã nguồn C++ tươn ứng. Qt có một class QUiLoader cho phép một ứng dụng tải một file .ui và tạo một giao diện động tương ứng.

- uic Python module : PyQt5 không chứa class QUiLoader nhưng thay vào đó là module Python uic. Cũng giống như QUiLoader , module python uic này cũng tải định dạng file .ui và tạo giao diện động tương ứng. Giống như UIC (User Interface Compiler) module python uic này cũng sinh ra mã nguồn python tạo nên giao diện tương ứng.

Command line : $ pyuic5  .ui  >  .py  là dòng lệnh làm việc với module python uic này.

- Python3 : python là một ngôn ngữ lập trình bậc cao, linh hoạt, là ngôn ngữ thông dịch và là một ngôn ngữ động. Python do Guido van Rossum tạo ra năm 1990. Các phiên bản của Python trong quá trình phát triển : Python 1 – giai đoạn 1990 tới 1995; Python 2 – phát hành vào năm 2000; Python 3 , python 3000 hoặc py3k được phát hành 3/12/2008.

https://www.python.org/

2. Cài đặt PyQt5

2.1. Trên Window

2.2. Trên Linux

 

* Lưu ý : Các bạn chú ý các Comment hoặc phần chú thích ở phần dưới các video để cài đặt được nhanh chóng, chính xác.

 

3. Cài đặt thư viện cho PyQt5 trên hệ điều hành Raspbian

- Tương tự như cài đặt PyQt5 trên hệ điều hành Ubuntu, với hệ điều hành Raspbian chúng ta cần cài đặt thư viện cho PyQt5 để có thể chạy được các file .py của giao diện đã thiết kế.

- Khởi động Pi, bật Terminar và thực hiện lệnh sau :

$ sudo apt-get install python3-pyqt5

$ python3 --version

Như vậy thư viện cho PyQt5 đã được cài đặt trên Raspbian.

4. Một số tài liệu tham khảo dành cho việc lập trình với PyQt

[1] PyQt Tutorial, http://www.tutorialspoint.com/pyqt/index.htm

[2] PyQt5 , http://zetcode.com/gui/pyqt5/introduction/

 

 

Phần 2 chúng ta sẽ cùng nhau thiết kế một giao diện người dùng đơn giản, lập trình một số chức năng cho nó, và thực hiện cài đặt để nó khởi động cùng hệ điều hành Raspbian. 

 

__________________________________   MLab chúc các bạn học tập vui vẻ _______________________________________________

Viết đánh giá

Họ và tên:


Đánh giá của bạn: Lưu ý: Không hỗ trợ HTML!

Bình chọn: Dở            Hay

Nhập mã bảo vệ: