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 子类的基类。让我们讨论一些重要的大小调整器,例如wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer 和wx.GridBagSizer。
序列号 | 尺寸测定器和描述 |
---|---|
1 | 盒子大小调整器
该大小调整器允许控件以行或列的方式排列。BoxSizer 的布局由其方向参数(wxVERTICAL 或wxHORIZONTAL)决定。 |
2 | 网格大小调整器
顾名思义,GridSizer 对象呈现二维网格。控件按照从左到右、从上到下的顺序添加到网格槽中。 |
3 | 灵活网格尺寸调整器
该尺寸测定器还具有二维网格。然而,它在单元格中布局控件方面提供了更多的灵活性。 |
4 | 网格包尺寸确定器
GridBagSizer 是一款多功能尺寸确定器。它提供了比 FlexiGridSizer 更多的增强功能。子部件可以添加到网格内的特定单元格。 |
5 | 静态框大小调整器
StaticBoxSizer 将盒子大小调整器放入静态盒子中。它在盒子周围提供了边框,并在顶部提供了标签。 |