wxPython 佈局管理



可以透過指定以畫素為單位的絕對座標,將GUI小部件放置在容器視窗內。座標相對於視窗建構函式的size引數定義的視窗尺寸。小部件在視窗內的位置由其建構函式的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`。

序號 Sizer & 描述
1 BoxSizer

此sizer允許控制元件以行方式或列方式排列。BoxSizer 的佈局由其orientation引數(`wxVERTICAL` 或 `wxHORIZONTAL`)確定。

2 GridSizer

顧名思義,`GridSizer` 物件呈現一個二維網格。控制元件按從左到右、從上到下的順序新增到網格槽中。

3 FlexGridSizer

此sizer也具有二維網格。但是,它在單元格中佈局控制元件時提供了更多靈活性。

4 GridBagSizer

GridBagSizer是一個多功能的sizer。它比FlexGridSizer提供了更多增強功能。子視窗可以新增到網格內的特定單元格。

5 StaticBoxSizer

StaticBoxSizer 將 BoxSizer 放入靜態框中。它在框周圍提供邊框以及頂部的標籤。

廣告
© . All rights reserved.