User interface 把一个箱子放在面板的中间

User interface 把一个箱子放在面板的中间,user-interface,layout,wxpython,positioning,User Interface,Layout,Wxpython,Positioning,我已经编写了一些代码来显示wx.Frame,其中有一个wx.Panel,其中有一个jpg。jpg与帧大小相同,因此当程序启动时,用户会看到一张覆盖整个窗口的图片。覆盖在这张图片的顶部,在面板的中央我想放一个包含各种小部件的wx.BoxSizer。到目前为止,我已经看到了sizer,但是,尽管我可能会尝试,我无法将它从面板最左上角移到中心。毫无疑问,有很多方法都涉及到网格和边框,但在我开始这条路之前,我想知道我是否遗漏了一些简单的东西,并且有一个命令可以用来将小部件定位在面板的指定部分 另外,我也

我已经编写了一些代码来显示wx.Frame,其中有一个wx.Panel,其中有一个jpg。jpg与帧大小相同,因此当程序启动时,用户会看到一张覆盖整个窗口的图片。覆盖在这张图片的顶部,在面板的中央我想放一个包含各种小部件的wx.BoxSizer。到目前为止,我已经看到了sizer,但是,尽管我可能会尝试,我无法将它从面板最左上角移到中心。毫无疑问,有很多方法都涉及到网格和边框,但在我开始这条路之前,我想知道我是否遗漏了一些简单的东西,并且有一个命令可以用来将小部件定位在面板的指定部分


另外,我也知道我可以使用绝对定位来实现这一点,但我希望能够调整窗口的大小,同时将尺寸调整器保持在其中心。

通常,您无法看到尺寸调整器。但不管怎样,你并没有真正的中心一个大小。您可以将小部件放在sizer的中心。因此,当您将小部件添加到sizer中时,您需要执行以下操作:

mySizer = wx.BoxSizer(wx.VERTICAL)
mySizer.Add(widget, 0, wx.CENTER|wx.ALL, 5)
现在,它只能水平居中。如果您希望它位于面板的正中心,那么创建另一个水平定向的BoxSizer,并将第一个尺寸器添加到第二个尺寸器,使其也居中

hSizer = wx.BoxSizer(wx.HORIZONTAL)
hSizer.Add(mySizer, 0, wx.CENTER)