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

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

15:35 - 15/01/2019

Hướng cài đặt Hệ điều hành và Remote Desktop cho Raspberry Pi nhanh chóng và cực kỳ đơn giản
Remote Desktop Raspberry Pi không cần Wifi, mạng LAN và IP
Camera nhiệt giải pháp tuyệt vời cho mùa Covid-19
Lập trình cơ bản với OpenPLC trên Raspberry Pi
Hướng dẫn cài đặt OpenPLC trên Raspberry Pi

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ẻ _________________ 


Để cập nhật các tin tức công nghệ mới các bạn làm theo hướng dẫn sau đây :


Các bạn vào Trang chủ >> Tin tức. ở mục này có các bài viết kỹ thuật thuộc các lĩnh vực khác nhau các bạn có thể lựa chọn lĩnh vực mà mình quan tâm để đọc nhé !!!

Các bạn cũng có thế kéo xuống cuối trang để xem những tin tức công nghệ mới nhất.