在使用 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……但这个功能当然应该仍然可用)。
有关如何解决此问题的任何建议/解决方案?提前致谢!