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子类的基类。让我们讨论一些重要的sizer,例如 `wx.BoxSizer`、`wx.StaticBoxSizer`、`wx.GridSizer`、`wx.FlexGridSizer` 和 `wx.GridBagSizer`。

序号 Sizer & 描述
1 BoxSizer

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

2 GridSizer

顾名思义,`GridSizer` 对象呈现一个二维网格。控件按从左到右、从上到下的顺序添加到网格槽中。

3 FlexGridSizer

此sizer也具有二维网格。但是,它在单元格中布局控件时提供了更多灵活性。

4 GridBagSizer

GridBagSizer是一个多功能的sizer。它比FlexGridSizer提供了更多增强功能。子窗口可以添加到网格内的特定单元格。

5 StaticBoxSizer

StaticBoxSizer 将 BoxSizer 放入静态框中。它在框周围提供边框以及顶部的标签。

广告