通过指定以像素为单位测量的绝对坐标,可以将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.
SN | Sizer&描述 |
---|---|
1 | BoxSizer 此sizer允许控件按行或列方式排列. BoxSizer的布局由其方向参数(wxVERTICAL或wxHORIZONTAL)决定. |
2 | GridSizer 顾名思义,GridSizer对象呈现二维网格.控件以从左到右和从上到下的顺序添加到网格槽中. |
3 | FlexiGridSizer 此sizer也有一个二维网格.但是,它在单元格中布置控件时提供了更大的灵活性. |
4 | GridBagSizer GridBagSizer是一款多功能的sizer.它提供了比FlexiGridSizer更多的增强功能.子窗口小部件可以添加到网格中的特定单元格. |
5 | StaticBoxSizer StaticBoxSizer将一个box sizer放入一个静态框中.它提供了盒子周围的边框以及顶部的标签. |