Tìm hiểu về QLabel trong PyQt6


Giới thiệu về QLabel

Trong bài viết này chúng ta dược tìm hiểu về cách sử dụng lớp QLabel trong thư viện PyQt6. QLabel là một widget được dùng để hiển thị dữ liệu dạng văn bản, hình ảnh (hiển thị ảnh với nhiều định dạng như jpg, png, svg, …)
Để tạo một label widget, ta thực hiện theo các bước như sau:
Đầu tiên, thêm lớp QLabel widget từ thư viện PyQt6.QtWidgets:

from PyQt6.QtWidgets import QLabel

Thứ hai, tạo một đối tượng là một thể hiện (instance) của lớp QLabel:

label = QLabel("Hiển thị nội dung văn bản.")

Trong cú pháp trên, bạn đã truyền một chuỗi ký tự (string) mà bạn muốn hiển thị lên giao diện bằng QLabel.
Tuy nhiên, bạn cũng có thể sử dụng phương thức setText() để thiết lập giá trị chuỗi ký tự mà bạn muốn hiển thị sau khi tạo một đối tượng từ QLabel:

label = QLabel()
label.setText("Hiển thị nội dung văn bản.")

Bên trên là ta hiển thị nội dung văn bản lên giao diện, vậy, làm như nào để lấy nội dung mà ta thấy trên giao diện đã có. Để lấy giá trị nội dung văn bản của QLabel, bạn dùng phương thức text():

label.text()

Để xoá bỏ dữ liệu văn bản của QLabel, ta sử dụng phương thức clear():

label.clear()

Ví dụ về QLabel đầu tiên

Trong chương trình dưới đây, ta lập trình để hiển thị một nội dung văn bản bằng QLabel:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout

class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle("Ví dụ 1")
        self.setGeometry(150, 150, 320, 210)

        # tạo một QLabel
        label = QLabel("Hiển thị nội dung văn bản bằng QLabel")

        # thiết lập vị trí của QLabel trên giao diện
        layout = QVBoxLayout()
        layout.addWidget(label)
        self.setLayout(layout)

        # hiển thị trên giao diện
        self.show()

# chương trình chính
if __name__ == "__main__":
    app = QApplication(sys.argv)

    # tạo của sổ chính
    window = MainWindow()

    # tạo vòng lặp sự kiện
    sys.exit(app.exec())

Kết quả chương trình trên như sau:

Hiển thị văn bản bằng QLabel

Hiển thị văn bản bằng QLabel

Sử dụng QLabel để hiển thị một ảnh

Để hiển thị ảnh bằng strong QLabel, ta thực hiện theo các bước sau:
Đầu tiên, thêm lớp QPixmap từ thư viện PyQt6.QtGui:

from PyQt6.QtGui import QPixmap

Thứ hai, tạo đối tượng là một thể hiện của lớp QPixmap cùng với một đường dẫn đến vị trí lưu trữ ảnh:

pixmap = QPixmap("anh_dong_vat.jpg")

Với cú pháp trên, bạn phải chắc chắn rằng ảnh được lưu cùng thư mục chứa chương trình lập trình.
Thứ ba, tạo một đối tượng từ QLabel và sử dụng phương thức setPixmap() để hiển thị ảnh:

label = QLabel()
label.setPixmap(pixmap)

Chương trình hoàn chỉnh sau đây nhằm hiển thị ảnh trên giao diện sử dụng QLabel:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt6.QtGui import QPixmap

class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle('Ví dụ 2')
        self.setGeometry(200, 200, 700, 700)

        # tạo thể hiện của QLabel
        label = QLabel()
        # đối tượng lưu trữ ảnh
        pixmap = QPixmap('anh_dong_vat.jpg')
        # gán ảnh lên label
        label.setPixmap(pixmap)

        # thiết lập vị trí trên giao diện
        layout = QVBoxLayout()
        layout.addWidget(label)
        self.setLayout(layout)

        # hiển thị trên giao diện
        self.show()

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

    # tạo đối tượng cửa sổ chính
    window = MainWindow()

    # tạo vòng lặp sự kiện
    sys.exit(app.exec())

Kết quả chương trình trên như sau:

Hiển thị ảnh bằng QLabel

Hiển thị ảnh bằng QLabel

Lớp QPixmap hỗ trợ hiển thị nhiều định dạng ảnh như: bmp, gif, jpg, png, jpeg, …

Hiển thị ảnh hoạt hoạ bằng QLabel

Để hiển thị một ảnh hoạt hoạ, ta cần thực hiện các bước sau:
Thứ nhất, ta thêm lớp QMovie từ lớp PyQt6.QtGui:

from PyQt6.QtGui import QMovie

Thứ hai, tạo đối tượng như là một thể hiện của lớp QMovie cùng với đường dẫn đến ảnh hoạt hoạ:

movie = QMovie("dog-running.gif")

Thứ ba, tạo một đối tượng từ lớp QLabel:

label = QLabel()

Thứ tư, thiết lập hiển thị ảnh hoạt hoạ bằng QLabel sử dụng phương thức setMovie():

label.setMovie(movie)

Cuối cùng, gọi phương thức start() để chạy ảnh hoạt hoạ:

movie.start()

Chương trình dưới đây nhằm hiển thị ảnh hoạt hoạ bằng QLabel:

import sys
from PyQt6.QtWidgets import QApplication, QWidget, QLabel, QVBoxLayout
from PyQt6.QtGui import QMovie

class MainWindow(QWidget):
    def __init__(self, *args, **kwargs):
        super().__init__(*args, **kwargs)

        self.setWindowTitle("Ví dụ 3")
        self.setGeometry(200, 200, 200, 200)

        # tạo đối tượng label
        label = QLabel()
        # tạo đối tượng movie
        movie = QMovie("dog-running.gif")
        # gán movie vào label
        label.setMovie(movie)
        # bắt đầu movie
        movie.start()

        # thiết lập vị trí trên giao diện
        layout = QVBoxLayout()
        layout.addWidget(label)
        self.setLayout(layout)

        # hiển thị cửa sổ
        self.show()


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

    # tạo đối tượng cửa sổ
    window = MainWindow()

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

Kết quả chương trình trên như sau:

Hiển thị ảnh hoạt hoạ bằng QLabel

Hiển thị ảnh hoạt hoạ bằng QLabel

Source code mẫu QLabel

Có thể bạn sẽ thích…

Trả lời