PyQt5 - Quản lý bố cục
Một tiện ích GUI có thể được đặt bên trong cửa sổ vùng chứa bằng cách chỉ định tọa độ tuyệt đối của nó được đo bằng pixel. Tọa độ có liên quan đến kích thước của cửa sổ được xác định bởi phương thức setGeometry ().
cú pháp setGeometry ()
QWidget.setGeometry(xpos, ypos, width, height)
Trong đoạn mã sau, cửa sổ cấp cao nhất có kích thước 300 x 200 pixel được hiển thị ở vị trí (10, 10) trên màn hình.
import sys
from PyQt4 import QtGui
def window():
app = QtGui.QApplication(sys.argv)
w = QtGui.QWidget()
b = QtGui.QPushButton(w)
b.setText("Hello World!")
b.move(50,20)
w.setGeometry(10,10,300,200)
w.setWindowTitle(“PyQt”)
w.show()
sys.exit(app.exec_())
if __name__ == '__main__':
window()
A PushButton widget được thêm vào cửa sổ và được đặt ở vị trí 50 pixel về phía bên phải và 20 pixel phía dưới vị trí trên cùng bên trái của cửa sổ.
Tuy nhiên, Định vị Tuyệt đối này không phù hợp vì những lý do sau:
Vị trí của tiện ích không thay đổi ngay cả khi cửa sổ được thay đổi kích thước.
Sự xuất hiện có thể không đồng nhất trên các thiết bị hiển thị khác nhau với độ phân giải khác nhau.
Việc sửa đổi bố cục rất khó vì có thể cần thiết kế lại toàn bộ biểu mẫu.
API PyQt cung cấp các lớp bố cục để quản lý dễ dàng hơn việc định vị các widget bên trong vùng chứa. Ưu điểm của trình quản lý Bố cục so với định vị tuyệt đối là -
Các widget bên trong cửa sổ được tự động thay đổi kích thước.
Đảm bảo sự xuất hiện đồng nhất trên các thiết bị hiển thị có độ phân giải khác nhau.
Có thể thêm hoặc xóa động tiện ích con mà không cần phải thiết kế lại.
Bộ công cụ Qt xác định các bố cục khác nhau có thể được sử dụng với tiện ích Qt Designer.
Đây là danh sách các Class mà chúng ta sẽ thảo luận từng cái một trong chương này.
Sr.No. | Lớp học & Mô tả |
---|---|
1 | QBoxLayout Lớp QBoxLayout sắp xếp các widget theo chiều dọc hoặc chiều ngang. Các lớp dẫn xuất của nó là QVBoxLayout (để sắp xếp các widget theo chiều dọc) và QHBoxLayout (để sắp xếp các widget theo chiều ngang). |
2 | QGridLayout Một đối tượng lớp GridLayout trình bày với một lưới các ô được sắp xếp theo hàng và cột. Lớp chứa phương thức addWidget (). Bất kỳ tiện ích con nào cũng có thể được thêm vào bằng cách chỉ định số hàng và số cột của ô. |
3 | QFormLayout QFormLayout là một cách thuận tiện để tạo dạng hai cột, trong đó mỗi hàng bao gồm một trường đầu vào được liên kết với một nhãn. Theo quy ước, cột bên trái chứa nhãn và cột bên phải chứa trường đầu vào. |