0

在使用 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 * 高度帧。

请参见下面的示例。顶部图像是我最终得到的,面板 1 和面板 2 具有相同的高度(框架中可用高度的一半)。最底部是我想要的,每个面板之间都有一些比例。

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


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

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

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

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

4

1 回答 1

0

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

于 2013-11-19T06:57:28.350 回答