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()
    
    Absolute Positioning但是由于以下原因不适合 -
    • 即使调整窗口大小,小部件的位置也不会改变。
    • 在不同分辨率的不同显示设备上,外观可能不统一。
    • 布局的修改很困难,因为它可能需要重新设计整个表单。
    wxPython API 提供了 Layout 类,用于更优雅地管理容器内小部件的定位。布局管理器相对于绝对定位的优势是 -
    • 窗口内的小部件会自动调整大小。
    • 确保在不同分辨率的显示设备上呈现统一的外观。
    • 无需重新设计即可动态添加或删除小部件。
    布局管理器在 wxPython 中称为 Sizer。Wx.Sizer 是所有 sizer 子类的基类。让我们讨论一些重要的sizer,例如wx.BoxSizer、wx.StaticBoxSizer、wx.GridSizer、wx.FlexGridSizer和wx.GridBagSizer。
    序列号 尺寸和说明
    1 BoxSizer
    这个 sizer 允许控件以行方式或列方式排列。BoxSizer 的布局由它的方向参数(wxVERTICAL 或 wxHORIZONTAL)决定。
    2 GridSizer
    顾名思义,GridSizer 对象呈现一个二维网格。控件以从左到右和从上到下的顺序添加到网格槽中。
    3 FlexiGridSizer
    这个sizer也有一个二维网格。但是,它在布置单元格中的控件时提供了更多的灵活性。
    4 GridBagSizer
    GridBagSizer 是一个多功能的sizer。它提供了比 FlexiGridSizer 更多的增强功能。子小部件可以添加到网格中的特定单元格。
    5 StaticBoxSizer
    StaticBoxSizer 将 box sizer 放入静态盒子中。它提供了框周围的边框以及顶部的标签。