2016-11-14 5 views
0

wx.SashLayoutWindowにサイザーを入れたいと思います。だから私はいくつかのウィジェットをサイザーに入れることができます。ここに私のコードです。 t1とt4は水平に配置する必要がありますが、垂直に見え、bottomwinに適合しません。 wx.SashLayoutWindowにサイザーを置く正しい方法を教えてもらえますか?どうもありがとう!通常wx.SashLayoutWindowにsizerを入れる方法

bottomwin = wx.SashLayoutWindow(self, -1, wx.DefaultPosition, (200, 30), wx.NO_BORDER|wx.SW_3D) 
    bottomwin.SetDefaultSize((-1, 45)) 
    bottomwin.SetOrientation(wx.LAYOUT_HORIZONTAL) 
    bottomwin.SetAlignment(wx.LAYOUT_BOTTOM) 
    bottomwin.SetBackgroundColour("#808080") 
    bottomwin.SetSashVisible(wx.SASH_TOP, True) 
    t4 = wx.TextCtrl(bottomwin, -1, "", size=(100, 10), style=wx.TE_MULTILINE | wx.TE_RICH2) 
    t1 = wx.Button(bottomwin, -1, "Default Button", size=(80, -1)) 
    sizer = wx.BoxSizer(wx.VERTICAL) 
    sizer.Add(t1, proportion=1, border=0, flag=wx.ALL | wx.EXPAND) 
    sizer.Add(t4, proportion=1, border=0, flag=wx.ALL | wx.EXPAND) 
    sizer.Fit(bottomwin) 
    self.SetSizer(sizer) 

答えて

0

あなたがしたいと思う:

botomwin.SetSizer(sizer) 

代わりのselfを使用。サイザーは、そのサイザーのレイアウトとサイズを管理するウィジェットの親であるウィンドウ(直接またはサブサイザーのいずれか)に接続する必要があります。

しかし、この場合、wx.SashLayoutWindowwx.Windowに由来しているため、デフォルトではサイズ調整ツールは使用されません。実際には、サッシの振る舞いに応じて子ウィンドウのサイズと位置を管理するカスタムコードを持っています。だからウィジェットとwx.SashLayoutWindowの間に何かを入れたいと思うでしょう。つまり、wx.Panelを子の子にしてbottomwinとし、それを親として指定してウィジェットをパネルに配置し、そのパネルにサイズ設定器を割り当てます。

関連する問題