2

私は wxPython の初心者なので、見落としている基本的なことが何もないことを願っています。SplitterWindow を使用して、フレームのコンテンツを 2 つのサイズ変更可能なサブウィンドウ (A と B) に分割したいのですが、ウィンドウの 1 つ (B) が必要です。 MaxSize を設定します。

残念ながら、これには問題があります。

  1. フレーム全体のサイズを変更 (拡大) すると (ここでは wxPython の用語に合わせようとしています。通常は、ウィンドウのサイズを変更します)、ウィンドウ B の maxSize に達したら、ウィンドウ Aフレームのコンテンツ全体を埋めるために自動的に拡大されます。悲しいことに、そうではありません。

  2. サッシを左に移動できない (ウィンドウ B のサイズを小さくする) ことを確認するにはどうすればよいですか? 現在の状況では、ウィンドウ B は左に移動するだけで (幅は変更されません)、WindowSplitter の青色の背景が表示されます。

これが私のコードです:

import wx         

class MainWindow(wx.Frame):

    def __init__(self, parent, title):
        wx.Frame.__init__(self, parent, title=title, size=(500,300))

        # Create View
        self.loadView()

        #self.SetAutoLayout(1)
        self.GetSizer().Fit(self)
        self.Centre()
        self.Show()

    def loadView(self):        
        splitter = wx.SplitterWindow(self, wx.ID_ANY, style = wx.SP_BORDER, size=(500, 300))
        splitter.SetBackgroundColour('#0000ff')

        panelLeft = wx.Panel(splitter, size=(200,100))
        panelLeft.SetBackgroundColour('#00ff00')

        panelRight = wx.Panel(splitter, size=(200,100))
        panelRight.SetBackgroundColour('#ff0000')
        panelRight.SetMaxSize((200, -1))

        splitter.SplitVertically(panelLeft, panelRight)

        self.SetSizer(wx.BoxSizer(wx.HORIZONTAL))
        self.GetSizer().Add(splitter, 1, wx.EXPAND)


app = wx.App(False)
frame = MainWindow(None, "Test")
app.MainLoop()

百聞は一見に如かず:ここに画像の説明を入力 青色の領域はスプリッターの一部ですが、ウィンドウ A によって埋められていません。

正しい方向へのヘルプ/ヒントをいただければ幸いです。

ありがとう、ダニエル

4

1 に答える 1

4

wx を積極的に使用しなくなったため、ソリューションをテストできません。しかし、あなたが探しているのは

SetSashGravity(0.5)

SplitterWindow のデフォルトの動作では、Resize イベントが発生すると、Right または Bottom ウィンドウのみがサイズ変更されます。そしてあなたの場合、そのウィンドウに最大サイズを課しました。

SetSashGravityのドキュメントを参照してください

于 2011-09-26T22:07:53.497 に答える