PYQT TUTORIAL
Hướng dẫn sử dụng LangChain bằng Python Cách tự viết Context Manager trong Python Cách background của hình ảnh trong Python Cách làm việc với Notion API trong Python Cách đo Time chạy trong Python Cách sao chép danh sách (List) trong Python Cách kiểm tra List trống trong Python Cách sắp xếp dictionary theo giá trị trong Python PyQt là gì? Tạo một chương trình "Hello World". Tín hiệu và Khe (Signals & Slots) trong PyQt Cách sử dụng widget PyQt QLabel Cách sử dụng widget QPushButton của PyQt Cách sử dụng widget QLineEdit trong PyQt Cách sử dụng QVBoxLayout trong PyQt Cách sử dụng QGridLayout trong PyQt Cách sử dụng QFormLayout trong PyQt Cách sử dụng lớp QCheckBox trong PyQt Cách sử dụng lớp PyQt QRadioButton Sử dụng PyQt QComboBox để tạo Widget Combobox Cách sử dụng widget PyQt QSpinBox để tạo một spin box Cách tạo một widget nhập ngày sử dụng lớp PyQt QDateEdit Cách tạo một widget nhập giờ sử dụng lớp PyQt QTimeEdit Cách tạo một widget nhập ngày và giờ sử dụng PyQt QDateTimeEdit Cách sử dụng lớp PyQt QSlider để tạo một widget thanh trượt (slider). Cách dùng PyQt QWidget để làm container chứa các widget khác. Cách dùng lớp PyQt QTabWidget để tạo một widget dạng tab Cách dùng lớp PyQt QGroupBox để tạo một khung nhóm với tiêu đề Cách dùng lớp PyQt QTextEdit để tạo một widget cho phép chỉnh sửa Cách sử dụng lớp PyQt QProgressBar để tạo một widget progress bar Cách sử dụng lớp PyQt QMessageBox để tạo một hộp thoại Cách dùng lớp PyQt QInputDialog để tạo một hộp thoại nhập liệu Cách dùng lớp PyQt QFileDialog để tạo hộp thoại chọn file Cách sử dụng lớp QMainWindow của PyQt để tạo cửa sổ Cách sử dụng lớp PyQt QMenu để tạo menu Cách dùng lớp PyQt QToolBar để tạo các widget toolbar Cách dùng lớp QDockWidget của PyQt để tạo một widget Cách dùng lớp QStatusBar trong PyQt để tạo thanh status bar Cách sử dụng lớp QListWidget trong Python Cách sử dụng lớp QTableWidget để tạo một bảng Cách sử dụng lớp QTreeWidget của PyQt Cách sử dụng Qt Designer để thiết kế UX/UI trong PyQt. Cách sử dụng QThread trong PyQt Cách tạo các lớp QThreadPool đa luồng trong PyQt Cách hoạt động của Model/View trong PyQt Cách sử dụng Qt Style Sheets (QSS) trong PyQt. Chuyển đổi PyQt sang EXE trong PyQt
CÁC CHỦ ĐỀ
BÀI MỚI NHẤT
MỚI CẬP NHẬT

Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.

PyQt là gì? Tạo một chương trình "Hello World".

Trong bài viết này, bạn sẽ tìm hiểu cách tạo một ứng dụng đơn giản với PyQt, hiển thị thông báo "Hello World". Đây là một bước khởi đầu lý tưởng để làm quen với PyQt, một công cụ mạnh mẽ cho phép bạn xây dựng giao diện người dùng đồ họa (GUI) trên nhiều nền tảng. Hướng dẫn sẽ giới thiệu các khái niệm cơ bản và quy trình tạo một chương trình PyQt đầu tiên, giúp bạn nắm vững nền tảng để phát triển các ứng dụng phức tạp hơn trong tương lai.

test php

banquyen png
Bài viết này được đăng tại freetuts.net, không được copy dưới mọi hình thức.

PyQt là gì?

PyQt là một bộ thư viện cho phép bạn sử dụng các công cụ và thành phần của Qt trong các ứng dụng Python. Qt là một framework phát triển ứng dụng đa nền tảng mạnh mẽ, được sử dụng để tạo các giao diện người dùng đồ họa (GUI) cho phần mềm chạy trên nhiều hệ điều hành như Windows, macOS, Linux, và các nền tảng di động.

PyQt cung cấp các binding (kết nối) để Python có thể sử dụng các công cụ của Qt, giúp bạn tạo ra các ứng dụng GUI mạnh mẽ với Python. PyQt hỗ trợ nhiều phiên bản của Qt, như PyQt4, PyQt5 và PyQt6, trong đó PyQt6 là phiên bản mới nhất.

Với PyQt, bạn có thể tạo ra các ứng dụng phức tạp với các thành phần như cửa sổ, nút, hộp thoại, menu, và nhiều thành phần GUI khác, cùng với việc quản lý sự kiện và tương tác người dùng một cách linh hoạt. PyQt thường được sử dụng trong các dự án phát triển phần mềm cần giao diện đồ họa đẹp mắt và chuyên nghiệp.

Bài viết này được đăng tại [free tuts .net]

Cài đặt gói PyQt

PyQt là một binding của Python cho bộ công cụ ứng dụng đa nền tảng Qt. Vì PyQt là một gói của bên thứ ba, nên bạn cần cài đặt nó trước khi sử dụng.

PyQt6 là phiên bản mới nhất của PyQt tại thời điểm viết hướng dẫn này. Để cài đặt PyQt6 bằng PyPI trên Windows, bạn sử dụng lệnh pip sau:

pip install PyQt6

Nếu bạn sử dụng macOS hoặc Linux, bạn cần sử dụng lệnh pip3:

pip3 install PyQt6

Tạo chương trình PyQt đầu tiên

Chương trình sau đây hiển thị một cửa sổ với tiêu đề "Hello World" trên màn hình:

from PyQt6.QtWidgets import QApplication, QWidget

# Tạo đối tượng QApplication
app = QApplication([])

# Tạo cửa sổ chính
window = QWidget(windowTitle='Hello World')
window.show()

# Bắt đầu vòng lặp sự kiện
app.exec()

Để chạy ứng dụng, bạn sử dụng lệnh python:

python main.py

Nếu bạn sử dụng macOS hoặc Linux, bạn có thể sử dụng lệnh python3:

python3 main.py

Chương trình trên sẽ tạo ra một cửa sổ như sau:

PyQt Hello World Program png

Cách hoạt động

Đầu tiên, bạn cần import các lớp QApplicationQWidget từ PyQt6.QtWidgets:

from PyQt6.QtWidgets import QApplication, QWidget

Tiếp theo, tạo một đối tượng QApplication:

app = QApplication([])

Mỗi ứng dụng PyQt cần một và chỉ một đối tượng QApplication.

Sau đó, tạo một instance của QWidget với tiêu đề "Hello World" và gọi phương thức show() để hiển thị cửa sổ:

window = QWidget(windowTitle='Hello World')
window.show()

Cuối cùng, gọi phương thức exec() của đối tượng QApplication để bắt đầu vòng lặp sự kiện:

app.exec()

Giới thiệu về vòng lặp sự kiện trong PyQt

Mỗi ứng dụng PyQt cần có một đối tượng QApplication, đối tượng này giữ vòng lặp sự kiện của ứng dụng.

Vòng lặp sự kiện chịu trách nhiệm quản lý tất cả các sự kiện của ứng dụng, bao gồm các tương tác của người dùng với giao diện đồ họa.

Khi bạn tương tác với ứng dụng Qt, chẳng hạn như nhấn một phím hoặc nhấp vào một nút, PyQt sẽ tạo ra một sự kiện và đặt nó vào hàng đợi sự kiện.

Vòng lặp sự kiện sẽ liên tục kiểm tra hàng đợi sự kiện. Nếu vòng lặp sự kiện phát hiện một sự kiện, nó sẽ chuyển sự kiện đó đến một handler cụ thể.

Screenshot 202024 08 24 20234424 png

Handler sự kiện sẽ xử lý sự kiện và trả quyền điều khiển lại cho vòng lặp sự kiện để xử lý các sự kiện tiếp theo.

Hỗ trợ các đối số dòng lệnh & mã trả về

Một chương trình PyQt có thể chấp nhận một hoặc nhiều đối số dòng lệnh. Để làm điều này, bạn cần truyền argv từ module sys vào QApplication như sau:

app = QApplication(sys.argv)

Phương thức app.exec() trả về 0 nếu thành công hoặc một giá trị khác nếu thất bại.

Nếu một chương trình PyQt được thực thi từ Shell (dòng lệnh trên Windows hoặc Terminal trên macOS và Linux), nó nên trả về một mã chỉ định thành công hay thất bại của chương trình.

Để làm điều này, bạn gọi hàm sys.exit() và truyền kết quả của app.exec() vào nó như sau:

sys.exit(app.exec())

Bằng cách này, Shell có thể nhận mã trả về từ ứng dụng PyQt.

Tạo mẫu chương trình Qt

Ví dụ sau minh họa chương trình "Hello World" trong PyQt theo cách hướng đối tượng:

import sys
from PyQt6.QtWidgets import QApplication, QWidget


class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        
        # Đặt tiêu đề cửa sổ
        self.setWindowTitle('Hello World')
        
        # Hiển thị cửa sổ
        self.show()


if __name__ == '__main__':
    app = QApplication(sys.argv)

    # Tạo cửa sổ chính
    window = MainWindow()

    # Bắt đầu vòng lặp sự kiện
    sys.exit(app.exec())

Cách hoạt động

Đầu tiên, định nghĩa lớp MainWindow kế thừa từ QWidget:

class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)
        
        # Đặt tiêu đề cửa sổ
        self.setWindowTitle('Hello World')
        
        # Hiển thị cửa sổ
        self.show()

Trong phương thức __init__(), chúng ta đặt tiêu đề cửa sổ và gọi phương thức show() để hiển thị cửa sổ.

Tiếp theo, thêm khối if __name__ == '__main__': để bao gồm mã nếu chương trình được thực thi trực tiếp. Nếu script được import như một module, mã trong khối này sẽ không được thực thi.

if __name__ == '__main__':

Sau đó, tạo một đối tượng QApplication:

app = QApplication(sys.argv)

Sau đó, tạo một instance mới của MainWindow:

window = MainWindow()

Cuối cùng, bắt đầu vòng lặp sự kiện:

sys.exit(app.exec())

Kết bài

Mỗi ứng dụng PyQt có một và chỉ một đối tượng QApplication. Đối tượng QApplication giữ một vòng lặp sự kiện. Vòng lặp sự kiện quản lý tất cả các sự kiện của ứng dụng PyQt, liên tục kiểm tra hàng đợi sự kiện và chuyển tiếp sự kiện đến các handler của chúng. Gọi app.exec() để bắt đầu vòng lặp sự kiện. Sử dụng QMainWindow để tạo cửa sổ chính cho ứng dụng PyQt và gọi phương thức show() để hiển thị cửa sổ trên màn hình.

Cùng chuyên mục:

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn xây dựng Command-Line Interface (CLI) bằng Quo trong Python

Hướng dẫn toàn diện về module datetime trong Python

Hướng dẫn toàn diện về module datetime trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Cách truy cập và thiết lập biến môi trường trong Python

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Lớp dữ liệu (Data Classes) trong Python với decorator @dataclass

Từ khóa yield trong Python

Từ khóa yield trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sự khác biệt giữa sort() và sorted() trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Sử dụng Poetry để quản lý dependencies trong Python

Định dạng chuỗi Strings trong Python

Định dạng chuỗi Strings trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Một tác vụ phổ biến khi làm việc với danh sách trong Python

Làm việc với các biến môi trường trong Python

Làm việc với các biến môi trường trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa set() và frozenset() trong Python

Sự khác biệt giữa iterator và iterable trong Python

Sự khác biệt giữa iterator và iterable trong Python

Cách làm việc với file tarball/tar trong Python

Cách làm việc với file tarball/tar trong Python

Chuyển đổi kiểu dữ liệu trong Python

Chuyển đổi kiểu dữ liệu trong Python

Sự khác biệt giữa toán tử == và is trong Python

Sự khác biệt giữa toán tử == và is trong Python

Làm việc với file ZIP trong Python

Làm việc với file ZIP trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Cách sử dụng ThreadPoolExecutor trong Python

Sự khác biệt giữa byte objects và string trong Python

Sự khác biệt giữa byte objects và string trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format  trong Python

Xử lý độ chính xác các hàm floor, ceil, round, trunc, format trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Cách lặp qua nhiều list với hàm zip() trong Python

Top