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