【问题标题】:How do I correctly update several levels of nested sizers when some inner content changes its size?当某些内部内容更改其大小时,如何正确更新多个级别的嵌套大小?
【发布时间】:2023-04-07 23:27:01
【问题描述】:

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

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

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

我的问题是如何确保所有这些 sizer 都正确更新。例如,“sidebar panel 2”是它自己的类。如果它做了一些改变其内容区域大小的事情,它需要更新哪些sizer,它应该使用哪种方法来更新?哪些 sizer 应该自动更新?

(我之所以问,是因为我目前正忙于让这些侧边栏面板之一的内容区域正确更新,并且我想确保它上面的所有内容在我去重写类之前,视图层次结构中是正确的。)

【问题讨论】:

    标签: wxpython wxwidgets


    【解决方案1】:

    您必须在任何小部件或小部件所在的 sizer 上调用 Layout()。Robin Dunn(wxPython 的创建者)在此处的 wxPython wiki 上实际上已经很好地解释了这一点:

    它提到您可以使用Widget Inspection Tool 来帮助您确定要调用布局的小部件/大小。

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2021-02-26
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 2013-08-01
      • 1970-01-01
      • 2011-07-24
      相关资源
      最近更新 更多