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提供了Layout类,用于更优雅地管理容器内小部件的定位。与绝对定位相比,Layout管理器的优势在于
- 窗口内的小部件会自动调整大小。
- 保证了在不同分辨率的显示设备上的统一外观。
- 可以动态地添加或删除小部件,而不必重新设计。
布局管理器在wxPython中被称为Sizer。Wx.Sizer是所有sizer子类的基类。让我们讨论一些重要的Sizer,如wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer和wx.GridBagSizer。
S.N. | 筛选器和描述 |
---|---|
1 | BoxSizer 这个izer允许控件以行或列的方式排列。BoxSizer的布局由其方向参数(wxVERTICAL或wxHORIZONTAL)决定。 |
2 | GridSizer 顾名思义,GridSizer 对象展示了一个二维的网格。控件按照从左到右和从上到下的顺序被添加到网格槽中。 |
3 | FlexiGridSizer 这款编辑器也有一个二维的网格。然而,它在单元格中的控件布局方面提供了更多的灵活性。 |
4 | GridBagSizer GridBagSizer是一个多功能的分类器。它比FlexiGridSizer提供了更多的增强功能。子部件可以被添加到网格中的特定单元。 |
5 | StaticBoxSizer 一个StaticBoxSizer把一个盒子的尺寸放到一个静态盒子里。它在盒子周围提供一个边框,并在顶部提供一个标签。 |