wxPython - Layout 布局管理

通过指定以像素为单位的绝对坐标,可以将 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 提供了 Layout 类,用于更优雅地管理容器内小部件的定位。 布局管理器相对于绝对定位的优势是 −

  • 窗口内的小部件会自动调整大小。
  • 确保在不同分辨率的显示设备上呈现统一的外观。
  • 无需重新设计即可动态添加或删除小部件。

布局管理器在wxPython 中称为Sizer。 Wx.Sizer 是所有sizer 子类的基类。 让我们讨论一些重要的 sizer,例如 wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer 和 wx.GridBagSizer。

S.N. Sizers & 描述
1 BoxSizer

此 sizer 允许控件以行方式或列方式排列。 BoxSizer 的布局由其方向参数(wxVERTICAL 或 wxHORIZONTAL)决定。

2 GridSizer

此 GridSizer 对象呈现二维网格。 控件以从左到右和从上到下的顺序添加到网格槽中。

3 FlexiGridSizer

这个 sizer 也有一个二维网格。 但是,它在布置单元格中的控件方面提供了更多的灵活性。

4 GridBagSizer

GridBagSizer 是一个多功能的 sizer。 它提供了比 FlexiGridSizer 更多的增强功能。 可以将子小部件添加到网格中的特定单元格。

5 StaticBoxSizer

StaticBoxSizer 将盒子大小调整器放入静态盒子中。 它在盒子周围提供了一个边框,并在顶部提供了一个标签。