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 QTabWidget để tạo một widget dạng tab
Trong bài viết này, bạn sẽ tìm hiểu cách sử dụng lớp PyQt QTabWidget để tạo một widget dạng tab. QTabWidget là một công cụ mạnh mẽ trong PyQt, giúp bạn tổ chức và hiển thị các nội dung liên quan trên các trang tab riêng biệt, từ đó tạo ra giao diện người dùng gọn gàng và dễ sử dụng hơn. Tab widget thường được sử dụng trong các ứng dụng phức tạp, nơi mà việc chia nhỏ thông tin trên nhiều trang giúp cải thiện trải nghiệm người dùng.
Giới thiệu về PyQt QTabWidget
Tab (thẻ) cho phép bạn hiển thị thông tin liên quan trên các trang riêng biệt với nhãn được gắn ở trên. Tabs rất hữu ích để chia giao diện phức tạp thành các trang nhỏ hơn, giúp người dùng dễ tiếp thu và quản lý hơn.
Để tạo một tab widget, bạn sử dụng lớp QTabWidget. Các bước thực hiện như sau:
Đầu tiên, tạo đối tượng QTabWidget:
Bài viết này được đăng tại [free tuts .net]
tab = QTabWidget() layout.addWidget(tab)
Sau đó, tạo một trang (page) bằng cách sử dụng đối tượng QWidget làm container và thêm các widget con vào trong đó:
page = QWidget(tab) page_layout = QGridLayout() page.setLayout(page_layout)
Tiếp theo, thêm trang vào widget tab bằng phương thức addTab():
tab.addTab(page, 'Tiêu đề Tab')
Lặp lại bước thứ hai và ba để thêm nhiều trang hơn vào tab.
Ví dụ về PyQt QTabWidget
Chương trình sau minh họa cách tạo một widget tab với hai trang:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QFormLayout, QGridLayout, QTabWidget, QLineEdit, QDateEdit, QPushButton from PyQt6.QtCore import Qt class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('PyQt QTabWidget') main_layout = QGridLayout(self) self.setLayout(main_layout) # tạo một widget tab tab = QTabWidget(self) # trang thông tin cá nhân personal_page = QWidget(self) layout = QFormLayout() personal_page.setLayout(layout) layout.addRow('Tên:', QLineEdit(self)) layout.addRow('Họ:', QLineEdit(self)) layout.addRow('Ngày sinh:', QDateEdit(self)) # trang thông tin liên hệ contact_page = QWidget(self) layout = QFormLayout() contact_page.setLayout(layout) layout.addRow('Số điện thoại:', QLineEdit(self)) layout.addRow('Địa chỉ email:', QLineEdit(self)) # thêm các trang vào tab widget tab.addTab(personal_page, 'Thông tin cá nhân') tab.addTab(contact_page, 'Thông tin liên hệ') main_layout.addWidget(tab, 0, 0, 2, 1) main_layout.addWidget(QPushButton('Lưu'), 2, 0, alignment=Qt.AlignmentFlag.AlignLeft) main_layout.addWidget(QPushButton('Hủy'), 2, 0, alignment=Qt.AlignmentFlag.AlignRight) self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Kết quả:
Cách hoạt động
Ở đây, chúng ta tập trung vào phần cấu trúc của tab widget.
Bước 1: Tạo một widget tab:
tab = QTabWidget(self)
Bước 2: Tạo một trang sử dụng QWidget và đặt layout là QFormLayout:
personal_page = QWidget(self) layout = QFormLayout() personal_page.setLayout(layout)
Bước 3: Thêm các widget QLineEdit vào trang personal_page:
layout.addRow('Tên:', QLineEdit(self)) layout.addRow('Họ:', QLineEdit(self)) layout.addRow('Ngày sinh:', QDateEdit(self))
Bước 4: Tạo một trang mới để chứa các trường thông tin liên hệ:
contact_page = QWidget(self) layout = QFormLayout() contact_page.setLayout(layout) layout.addRow('Số điện thoại:', QLineEdit(self)) layout.addRow('Địa chỉ email:', QLineEdit(self))
Bước 5: Thêm các trang vào tab widget bằng phương thức addTab():
tab.addTab(personal_page, 'Thông tin cá nhân') tab.addTab(contact_page, 'Thông tin liên hệ')
Các tùy chọn của QTabWidget
QTabWidget cung cấp một số tùy chọn đáng chú ý:
Di chuyển các tab (Movable): Để làm cho các tab có thể di chuyển, bạn thiết lập thuộc tính movable:
tab.setMovable(True)
Tab có thể đóng (tabsClosable):
Nếu tabsClosable được thiết lập là True, các tab sẽ hiển thị nút đóng.
tab.setTabsClosable(True)
Hình dạng tab (Tab Shape):
Có hai dạng tab là tròn (rounded) và tam giác (triangular). Mặc định là dạng tròn.
tab.setTabShape(QTabWidget.TabShape.Triangular)
Vị trí của tab (Tab Position):
Tab có thể đặt ở bốn vị trí: Bắc, Nam, Tây, Đông. Để đặt vị trí tab, bạn có thể sử dụng thuộc tính tabPosition:
tab.setTabPosition(QTabWidget.TabPosition.West)
Kết bài
Sử dụng QTabWidget giúp bạn tạo một widget dạng tab dễ dàng trong PyQt, giúp chia giao diện thành nhiều phần nhỏ gọn và thân thiện với người dùng. Tab có thể được thiết lập di chuyển, có nút đóng, và thay đổi vị trí hoặc hình dạng tùy theo nhu cầu.