Wxpython 简明教程
wxPython - Layout Management
可以通过指定 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()
然而,这个 Absolute Positioning 由于以下原因不可行 −
-
即使调整了窗口的大小,小组件的位置也不会改变。
-
在具有不同分辨率的不同显示设备上,外观可能不统一。
-
布局中的修改比较困难,因为它可能需要重新设计整个表单。
wxPython API 提供了 Layout 类来更优雅地管理容器中组件的位置。布局管理器在绝对定位方面有以下优点 −
-
窗口中的小组件自动调整大小。
-
确保在不同分辨率的显示设备上一致的外观。
-
动态地增加或删除组件而不必重新设计。
布局管理器在 wxPython 中被称为 Sizer。Wx.Sizer 是所有 sizer 子类的基类。让我们讨论一些重要的 sizer,例如 wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer 和 wx.GridBagSizer。
S.N. |
Sizers & Description |
1 |
BoxSizer 此 sizer 允许按行或按列排列控件。BoxSizer 的布局由其方向参数(wxVERTICAL 或 wxHORIZONTAL)决定。 |
2 |
GridSizer 如其名称所示,GridSizer 对象呈现一个二维网格。控件在网格槽中从左到右、从上到下添加。 |
3 |
FlexiGridSizer 此 sizer 也有一个二维网格。但是,它在单元格中布局控件时提供了一些灵活性。 |
4 |
GridBagSizer GridBagSizer 是一款通用 sizer。它提供了比 FlexiGridSizer 更丰富的功能。子组件可被添加到网格中的特定单元格。 |
5 |
StaticBoxSizer StaticBoxSizer 将一个 box sizer 放在一个静态框中。它在框的周围提供了一个边框,顶部有一个标签。 |