在使用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 ......但是这个功能当然应该仍然可用)。
有关于如何解决此问题的任何建议/解决方案吗?提前谢谢!
答案 0 :(得分:0)
我通过动态计算面板最小和最佳尺寸来解决这个问题。