wxPython布局管理


一個GUI部件可通過指定以畫素為單位的絕對坐標放置在容器視窗中。 坐標是相對於它的構造尺寸引數定義的視窗的尺寸大小。視窗中的視窗小部件的位置由它的建構函式的pos引數定義的。
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() 

絕對定位不適合下列原因 ?

  • 小部件的位置,如果調整視窗的大小也不會改變。
  • 外觀可能不是均勻的,在具有不同的解析度不同的顯示裝置。
  • 修改中的布局是困難的,因為它可能需要重新設計整個表格。

wxPython的API提供了布局類的容器內的小部件的定位更優雅的管理。布局管理器使用絕對定位的優點是 -

  • 在視窗中的視窗小部件會自動調整大小。
  • 確保均勻的外觀上不同解析度的顯示裝置。
  • 新增或去除部件動態地是可能的,而不需要重新設計。

布局管理器在wxPython中被稱為Sizer。Wx.Sizer是所有sizer 的基礎類別。讓我們來討論一些重要的sizer ,如wx.BoxSizer,wx.StaticBoxSizer,wx.GridSizer,wx.FlexGridSizer和wx.GridBagSizer。

S.N.
大小測定器和說明
1 BoxSizer

sizer允許控制元件排放在按行或列的方式。BoxSizer布局是由它的定位引數(wxVERTICAL或wxHORIZONTAL)確定。

2 GridSizer

顧名思義,一個GridSizer物件呈現二維網格。控制元件被新增在網格槽以左到右和由上到下方順序。

3 FlexiGridSizer
這種sizer 也有一個二維網格。它提供靈活性布局中的控制單元。
4 GridBagSizer
GridBagSizer是一種多功能sizer。它比FlexiGridSizer提供了更多的增強功能。子構件可被新增到網格中的指定單元格。
5 StaticBoxSizer
StaticBoxSizer把一個盒子sizer放到靜態框。它提供了圍繞框邊界以及頂部標籤。