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 由于以下原因不可行 −

  1. 即使调整了窗口的大小,小组件的位置也不会改变。

  2. 在具有不同分辨率的不同显示设备上,外观可能不统一。

  3. 布局中的修改比较困难,因为它可能需要重新设计整个表单。

wxPython API 提供了 Layout 类来更优雅地管理容器中组件的位置。布局管理器在绝对定位方面有以下优点 −

  1. 窗口中的小组件自动调整大小。

  2. 确保在不同分辨率的显示设备上一致的外观。

  3. 动态地增加或删除组件而不必重新设计。

布局管理器在 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 放在一个静态框中。它在框的周围提供了一个边框,顶部有一个标签。