0

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 にするために私が今しなければならないこと...しかし、この機能はもちろんまだ利用できるはずです)。

この問題を解決するための提案/解決策はありますか? 前もって感謝します!

4

1 に答える 1

0

パネルの最小サイズと最適サイズを動的に計算することで、この問題を解決しました。

于 2013-11-19T06:57:28.350 に答える