wxPython - 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. Các tọa độ có liên quan đến kích thước của cửa sổ được xác định bởi đối số kích thước của hàm tạo của nó. Vị trí của tiện ích bên trong cửa sổ được xác định bởipos đối số của hàm tạo của nó.
import wx
app = wx.App()
window = wx.Frame(None, title = "wxPython Frame", size = (300,200))
panel = wx.Panel(window)
label = wx.StaticText(panel, label = "Hello World", pos = (100,50))
window.Show(True)
app.MainLoop()
Điều này Absolute Positioning tuy nhiên 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 wxPython 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 các widget động mà không cần phải thiết kế lại.
Trình quản lý bố cục được gọi là Sizer trong wxPython. Wx.Sizer là lớp cơ sở cho tất cả các lớp con của bộ sizer. Hãy để chúng tôi thảo luận về một số bộ kích thước quan trọng như wx.BoxSizer, wx.StaticBoxSizer, wx.GridSizer, wx.FlexGridSizer và wx.GridBagSizer.
SN | Sizers & Mô tả |
---|---|
1 | BoxSizer Bộ chỉnh này cho phép các điều khiển được sắp xếp theo hàng hoặc theo cột. Bố cục của BoxSizer được xác định bởi đối số định hướng của nó (có thể là wxVERTICAL hoặc wxHORIZONTAL). |
2 | GridSizer Như tên cho thấy, một đối tượng GridSizer trình bày một lưới hai chiều. Các điều khiển được thêm vào vị trí lưới theo thứ tự từ trái sang phải và từ trên xuống dưới. |
3 | FlexiGridSizer Sizer này cũng có một lưới hai chiều. Tuy nhiên, nó cung cấp một chút linh hoạt hơn trong việc thiết lập các điều khiển trong các ô. |
4 | GridBagSizer GridBagSizer là một bộ chỉnh âm đa năng. Nó cung cấp nhiều cải tiến hơn FlexiGridSizer. Tiện ích con có thể được thêm vào một ô cụ thể trong lưới. |
5 | StaticBoxSizer Một StaticBoxSizer đặt một bộ chỉnh hộp vào một hộp tĩnh. Nó cung cấp một đường viền xung quanh hộp cùng với một nhãn ở trên cùng. |