当某些内部内容更改其大小时,如何正确更新多个级别的嵌套sizer?

时间:2013-12-02 17:09:52

标签: wxpython wxwidgets

我正在构建一个WX应用程序,其中主窗口(“框架”)有两个内容区域:左侧的主要内容区域和右侧的侧边栏。侧边栏由垂直堆叠的面板集合组成,这些面板中的每一个都包含标题和内容区域。主窗口的视图层次结构如下所示:

  • 主窗口(wx.BoxSizer,水平)
    • 主要内容区域(wx.Panel)
    • 侧边栏(wx.BoxSizer,垂直)
      • 侧边栏面板1(wx.BoxSizer,垂直)
        • Title 1(wx.StaticText)
        • 内容区域1(wx.Panel)
      • 侧边栏面板2(wx.BoxSizer,垂直)
        • Title 2(wx.StaticText)
        • 内容区域2(wx.Panel)

每个侧边栏面板中的内容区域将随着我的应用程序运行而改变,因此侧边栏面板需要能够随着内容区域的增长和缩小而自行调整大小,同样侧边栏本身也需要能够移动其面板随着兄弟姐妹的成长和萎缩,适当地上下。

我的问题是如何确保所有这些sizer都正确更新。例如,“侧边栏面板2”是它自己的类。如果它做了改变其内容区域大小的东西,它需要更新哪些sizer,以及它应该使用哪种方法?哪些sizer应该自动更新?

(我问,因为我现在有时间让其中一个侧边栏面板的内容区域正确更新,我想确保上面的所有内容它在我重写类之前,视图层次结构是正确的。)

1 个答案:

答案 0 :(得分:2)

你必须在任何小部件或小部件所在的sizer上调用Layout()。这实际上已经在wxPython wiki上对Robin Dunn(wxPython的创建者)进行了很好的解释:

它提到您可以使用Widget Inspection Tool来帮助您找出调用Layout的小部件/大小调整器。