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