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.

SNSizer&描述
1BoxSizer

此sizer允许控件按行或列方式排列. BoxSizer的布局由其方向参数(wxVERTICAL或wxHORIZONTAL)决定.

2GridSizer

顾名思义,GridSizer对象呈现二维网格.控件以从左到右和从上到下的顺序添加到网格槽中.

3FlexiGridSizer

此sizer也有一个二维网格.但是,它在单元格中布置控件时提供了更大的灵活性.

4GridBagSizer

GridBagSizer是一款多功能的sizer.它提供了比FlexiGridSizer更多的增强功能.子窗口小部件可以添加到网格中的特定单元格.

5StaticBoxSizer

StaticBoxSizer将一个box sizer放入一个静态框中.它提供了盒子周围的边框以及顶部的标签.