我想在wx.SashLayoutWindow中添加一个sizer。所以我可以在sizer中放置一些小部件。这是我的代码。 t1和t4应该排列水平,但它看起来是垂直的,它们不适合bottomwin。 谁能告诉我在sx.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 :(得分:0)
通常你会这样做:
botomwin.SetSizer(sizer)
而不是使用self
。 sizer应该附加到窗口(直接或作为其中一个子sizer),它是您想要管理该sizer的布局和大小的小部件的父级。
但是,在这种情况下,由于wx.SashLayoutWindow
派生自wx.Window
,因此默认情况下不会使用sizer。它实际上有一些自定义代码,用于根据窗扇行为管理子窗口的大小和位置。因此,您需要在小部件和wx.SashLayoutWindow
之间放置一些内容。换句话说,创建一个wx.Panel
bottomwin
的孩子,通过将小部件指定为父级,将小部件放在面板上,并将大小调整器指定给该面板。