Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách dùng lớp PyQt QGroupBox để tạo một khung nhóm với tiêu đề
Trong bài viết này, bạn sẽ tìm hiểu cách sử dụng lớp PyQt QGroupBox để tạo ra một khung nhóm có tiêu đề, giúp dễ dàng tổ chức và quản lý các widget liên quan trong giao diện người dùng. Khung nhóm không chỉ làm cho giao diện trực quan hơn mà còn giúp chia nhỏ các thành phần thành những nhóm có liên quan, từ đó cải thiện trải nghiệm người dùng và cấu trúc của ứng dụng.
Giới thiệu về widget PyQt QGroupBox
QGroupBox cho phép bạn nhóm các widget liên quan lại với nhau trong một khung và có tiêu đề phía trên. Để tạo một widget khung nhóm, bạn sử dụng lớp QGroupBox
như sau:
group_box = QGroupBox(title)
Tuy nhiên, khung nhóm không tự động bố trí các widget con bên trong nó, do đó bạn cần tạo một đối tượng layout trước:
layout = QVBoxLayout()
Sau đó, đặt layout cho khung nhóm:
Bài viết này được đăng tại [free tuts .net]
group_box.setLayout(layout)
Sử dụng đối tượng layout để thêm các widget con vào khung nhóm:
layout.addWidget(widget1) layout.addWidget(widget2) layout.addWidget(widget3)
Dưới đây là các bước đầy đủ để tạo một khung nhóm và thêm các widget con vào đó:
# Tạo một khung nhóm group_box = QGroupBox(title) # Tạo một layout và gán nó cho khung nhóm layout = QVBoxLayout() group_box.setLayout(layout) # Thêm các widget vào layout layout.addWidget(widget1) layout.addWidget(widget2) layout.addWidget(widget3)
Ví dụ về widget PyQt QGroupBox
Ví dụ dưới đây minh họa cách sử dụng lớp QGroupBox để tạo các khung nhóm:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QFormLayout, QPushButton, QGroupBox, QLineEdit, QDateEdit class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QGroupBox') # Tạo layout chính layout = QFormLayout(self) self.setLayout(layout) # Tạo khung nhóm "Thông tin cá nhân" person_groupbox = QGroupBox('Thông tin cá nhân') form_layout = QFormLayout() person_groupbox.setLayout(form_layout) # Thêm các trường nhập liệu vào khung nhóm "Thông tin cá nhân" form_layout.addRow('Họ:', QLineEdit(person_groupbox)) form_layout.addRow('Tên:', QLineEdit(person_groupbox)) form_layout.addRow('Ngày sinh:', QDateEdit(person_groupbox)) # Tạo khung nhóm "Thông tin liên hệ" contact_groupbox = QGroupBox('Thông tin liên hệ') form_layout = QFormLayout() contact_groupbox.setLayout(form_layout) form_layout.addRow('Số điện thoại:', QLineEdit(contact_groupbox)) form_layout.addRow('Địa chỉ Email:', QLineEdit(contact_groupbox)) # Thêm khung nhóm vào layout chính layout.addWidget(person_groupbox) layout.addWidget(contact_groupbox) # Thêm nút lưu layout.addWidget(QPushButton('Lưu')) # Hiển thị cửa sổ self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Kết bài:
Giải thích cách hoạt động
-
Đầu tiên, tạo khung nhóm với tiêu đề 'Thông tin cá nhân':
person_groupbox = QGroupBox('Thông tin cá nhân')
Sau đó, tạo một layout dạng form và gán nó cho khung nhóm:
form_layout = QFormLayout() person_groupbox.setLayout(form_layout)
Thêm các trường nhập liệu vào layout của khung nhóm:
form_layout.addRow('Họ:', QLineEdit(person_groupbox)) form_layout.addRow('Tên:', QLineEdit(person_groupbox)) form_layout.addRow('Ngày sinh:', QDateEdit(person_groupbox))
Tạo khung nhóm thứ hai cho "Thông tin liên hệ" và thêm các trường nhập liệu vào:
contact_groupbox = QGroupBox('Thông tin liên hệ') form_layout = QFormLayout() contact_groupbox.setLayout(form_layout) form_layout.addRow('Số điện thoại:', QLineEdit(contact_groupbox)) form_layout.addRow('Địa chỉ Email:', QLineEdit(contact_groupbox))
Cuối cùng, đặt các khung nhóm vào cửa sổ chính:
layout.addWidget(person_groupbox) layout.addWidget(contact_groupbox)
Kết bài
Sử dụng lớp PyQt QGroupBox giúp bạn dễ dàng tạo các khung nhóm để tổ chức các widget con, giúp giao diện trở nên gọn gàng, trực quan và dễ quản lý hơn. Với việc phân chia các widget thành các nhóm có tiêu đề, người dùng có thể nhanh chóng nắm bắt được thông tin, từ đó nâng cao trải nghiệm và tính chuyên nghiệp cho ứng dụng của bạn.