wxPython を使用するアプリケーションでは、メイン フレームのレイアウトに wx.aui.AuiManager を使用します。ユーザーによってトリガーされた特定のイベントでは、フレームに 2 つのペインが表示されます。フレーム内の適切な場所 (右側) に表示されるように追加できますが、各ペインのサイズに苦労しています。の場合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()
問題は、ソフトウェアを実行してこれらの 2 つのパネルを開く (同時にポップアップする) とき、各パネルの高さが 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 呼び出し (つまり ) で MinSize および BestSize パラメーターを操作BestSize(wx.Size(1000, 1000))
することですが、その結果、2 つのパネルの幅は変わりますが、各パネルの高さは同じままです (親フレームの半分の高さ)!
親メイン フレームを再スケーリングする場合でも、panel1 と panel2 の間のこの比率 (30/70) を同じにしたいことに注意してください。ただし、ユーザーはパネルを「通常どおり」ドラッグして再スケーリングできる必要があります (これは50/50 から 30/70 にするために私が今しなければならないこと...しかし、この機能はもちろんまだ利用できるはずです)。
この問題を解決するための提案/解決策はありますか? 前もって感謝します!