Thông báo: Download 4 khóa học Python từ cơ bản đến nâng cao tại đây.
Cách sử dụng QFormLayout trong PyQt
Trong bài viết này, bạn sẽ tìm cách sử dụng PyQt QFormLayout
để sắp xếp các widget trong một biểu mẫu nhập liệu một cách gọn gàng và có tổ chức. QFormLayout
là một công cụ mạnh mẽ, giúp bạn dễ dàng tạo các biểu mẫu có cấu trúc rõ ràng với các nhãn và trường đầu vào được sắp xếp hợp lý, mang lại trải nghiệm người dùng tốt hơn trong các ứng dụng của bạn.
Giới thiệu về PyQt QFormLayout
Khi tạo biểu mẫu nhập liệu, bạn thường cần đặt các trường dữ liệu theo hàng. Trên mỗi hàng, bạn sẽ đặt một nhãn (label
) cạnh một widget đầu vào.
PyQt cung cấp cho bạn một bố cục biểu mẫu tiện lợi với hai cột, sắp xếp các widget trên biểu mẫu. Cột bên trái chứa nhãn và cột bên phải chứa widget đầu vào.
Để tạo bố cục biểu mẫu, bạn sử dụng lớp QFormLayout
:
Bài viết này được đăng tại [free tuts .net]
layout = QFormLayout(self) self.setLayout(layout) # self là widget cha
Việc thêm các widget vào bố cục biểu mẫu có thể được thực hiện bằng phương thức addRow()
. Ví dụ:
layout.addRow('Trường 1', input_widget1) layout.addRow('Trường 2', input_widget2)
Phương thức addRow()
nhận một chuỗi và một widget, và tự động tạo ra widget QLabel
cho chuỗi đó.
Nếu bạn truyền một widget đơn lẻ như QLabel
, widget này sẽ tự động trải dài cả hai cột. Trên thực tế, bạn có thể sử dụng tính năng này để tạo tiêu đề hoặc nhãn cho các phần trong biểu mẫu.
Ngoài việc cung cấp sự tiện lợi, QFormLayout
tuân thủ các hướng dẫn về giao diện và cảm nhận của nền tảng. Ví dụ, khi sử dụng trên macOS, các nhãn sẽ căn phải, trong khi trên Windows, các nhãn sẽ căn trái.
Hơn nữa, khi hiển thị trên màn hình hẹp, bố cục sẽ tự động thu gọn thành một cột với các nhãn nằm trên các widget đầu vào.
Ví dụ về PyQt QFormLayout
Ví dụ sau đây minh họa cách tạo một biểu mẫu đăng ký sử dụng QFormLayout
:
import sys from PyQt6.QtWidgets import QApplication, QWidget, QPushButton, QLineEdit, QFormLayout class MainWindow(QWidget): def __init__(self, *args, **kwargs): super().__init__(*args, **kwargs) self.setWindowTitle('Biểu Mẫu Đăng Ký') layout = QFormLayout() self.setLayout(layout) layout.addRow('Tên:', QLineEdit(self)) layout.addRow('Email:', QLineEdit(self)) layout.addRow('Mật Khẩu:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password)) layout.addRow('Xác Nhận Mật Khẩu:', QLineEdit(self, echoMode=QLineEdit.EchoMode.Password)) layout.addRow('Số Điện Thoại:', QLineEdit(self)) layout.addRow(QPushButton('Đăng Ký')) # Hiển thị cửa sổ self.show() if __name__ == '__main__': app = QApplication(sys.argv) window = MainWindow() sys.exit(app.exec())
Kết quả: