使用wx.aui.AuiManager的AddPane调整大小

时间:2013-09-11 11:26:55

标签: python user-interface wxpython

在使用wxPython的应用程序中,我使用wx.aui.AuiManager作为主框架的布局。对于用户触发的特定事件,框架中应出现两个窗格。我可以添加它们,使它们出现在框架中的正确位置(右侧),但我一直在努力克服每个窗格的大小。如果是self._mgr = wx.aui.AuiManager(),我只需使用

self._mgr.AddPane(mypanel1, wx.aui.AuiPaneInfo().
                      Name("MyPanel1").
                      Caption("MyPanel1").
                      MinSize(MyPanel1.GetBestSize()).
                      BestSize(MyPanel1.GetBestSize()).
                      Right().Layer(1).Position(0).CloseButton(True).
                      MaximizeButton(False))

self._mgr.AddPane(mypanel2, wx.aui.AuiPaneInfo().
                      Name("MyPanel2").
                      Caption("MyPanel2").
                      MinSize(MyPanel2.GetBestSize()).
                      BestSize(MyPanel2.GetBestSize()).
                      Right().Layer(1).Position(1).CloseButton(True).
                      MaximizeButton(False))

self._mgr.Update()

问题在于,当运行软件并打开这两个面板(它们同时弹出)时,每个面板的高度为height_frame * 0.5,但我希望它们的高度可以说是height_panel1 = 0.3 * height_frame,和height_panel2 = 0.7 * height_frame。

见下面的例子。顶部图像是我最终得到的,panel1和面板2具有相同的高度(框架中可用高度的一半)。最底层是我想要的,每个面板在它们之间都有一定的比例。

    +---------------------------------+    
    |                    +-----------+|    ^ F
    |    MAIN FRAME      | panel1    ||    | r
    |                    |           ||    | a
    |                    |           ||    | m
    |                    |           ||    | e
    |                    +-----------+|    |    
    |                    | panel2    ||    | h
    |                    |           ||    | e
    |                    |           ||    | i
    |                    |           ||    | g
    |                    +-----------+|    v h
    +---------------------------------+      t


    +---------------------------------+
    |                    +-----------+|
    |    MAIN FRAME      | panel1    ||
    |                    |           ||
    |                    +-----------+|
    |                    | panel2    ||
    |                    |           ||
    |                    |           ||
    |                    |           ||
    |                    |           ||
    |                    |           ||
    |                    +-----------+|
    +---------------------------------+

我尝试解决这个问题的方法是使用AddPane调用中的MinSize和BestSize参数(即BestSize(wx.Size(1000, 1000))),但结果是两个面板的宽度发生变化,但高度每个面板的数量仍然相同(父框架高度的一半)!

请注意,我希望panel1和panel2(30/70)之间的这个比例是相同的,即使重新缩放父主框架,但用户也应该能够通过“像往常一样”拖动面板来重新缩放它们(这是我现在必须做的从50/50到30/70 ......但是这个功能当然应该仍然可用)。

有关于如何解决此问题的任何建议/解决方案吗?提前谢谢!

1 个答案:

答案 0 :(得分:0)

我通过动态计算面板最小和最佳尺寸来解决这个问题。