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.

Các kiểu dữ liệu trong C ( int - float - double - char ...)
Thuật toán tìm ước chung lớn nhất trong C/C++
Cấu trúc lệnh switch case trong C++ (có bài tập thực hành)
ComboBox - ListBox trong lập trình C# winforms
Random trong Python: Tạo số random ngẫu nhiên
Lệnh cin và cout trong C++
Cách khai báo biến trong PHP, các loại biến thường gặp
Download và cài đặt Vertrigo Server
Thẻ li trong HTML
Thẻ article trong HTML5
Cấu trúc HTML5: Cách tạo template HTML5 đầu tiên
Cách dùng thẻ img trong HTML và các thuộc tính của img
Thẻ a trong HTML và các thuộc tính của thẻ a thường dùng