【发布时间】:2013-08-01 14:05:32
【问题描述】:
我很难让我的sizer 在 wxpython 中正常工作。我正在尝试在顶部做一个简单的水平条(其中包含文本)和下面的两个垂直框(带有gridsizers *左边的应该只有2列!*在每个里面)。我希望图像中的所有内容也能拉伸并适合我的面板(能够在侧面和顶部/底部添加填充)。
我有两个主要问题: 1.我不能让水平栏中的文字在中间(它向左) 2. 我想将两个垂直框隔开以跨越并适当地适应页面(也希望网格也能更好地跨越)。
这是我的代码(省略了一些部分):
self.LeagueInfoU = wx.Panel(self.LeagueInfo,-1, style=wx.BORDER_NONE)
self.LeagueInfoL = wx.Panel(self.LeagueInfo,-1, style=wx.BORDER_NONE)
self.LeagueInfoR = wx.Panel(self.LeagueInfo,-1, style=wx.BORDER_NONE)
vbox = wx.BoxSizer(wx.VERTICAL)
hbox1 = wx.BoxSizer(wx.HORIZONTAL)
hbox2 = wx.BoxSizer(wx.HORIZONTAL)
vbox2a = wx.GridSizer(12,2,0,0)
vbox3a = wx.GridSizer(10,3,0,0)
hbox1a = wx.BoxSizer(wx.VERTICAL)
vbox2 = wx.BoxSizer(wx.VERTICAL)
vbox3 = wx.BoxSizer(wx.VERTICAL)
hbox1.Add(self.LeagueInfoU, 1, wx.EXPAND | wx.ALL, 3)
vbox2.Add(self.LeagueInfoL, 1, wx.EXPAND | wx.ALL, 3)
vbox3.Add(self.LeagueInfoR, 1, wx.EXPAND | wx.ALL, 3)
vbox2a.AddMany([this is all correct])
self.LeagueInfoL.SetSizer(vbox2a)
vbox3a.AddMany([this is all correct])
self.LeagueInfoR.SetSizer(vbox3a)
font = wx.Font(20, wx.DEFAULT, wx.NORMAL, wx.BOLD)
self.Big_Header = wx.StaticText(self.LeagueInfoU, -1, 'Testing This')
self.Big_Header.SetFont(font)
hbox1a.Add(self.Big_Header, 0, wx.ALIGN_CENTER|wx.ALIGN_CENTER_VERTICAL)
self.LeagueInfoU.SetSizer(hbox1a)
hbox2.Add(vbox2, 0, wx.EXPAND)
hbox2.Add(vbox3, 0, wx.EXPAND)
vbox.Add(hbox1, 0, wx.EXPAND)
vbox.Add(hbox2, 1, wx.EXPAND)
self.LeagueInfo.SetSizer(vbox)
【问题讨论】:
-
你能举一个可运行的例子吗?
-
顺便说一句,您只需要 2 个 box sizer 和 2 个 grid sizer。 (水平框尺寸器中的网格尺寸器,然后是垂直尺寸器中的文本和水平尺寸器)。在添加 gridsizer 时,您可能也希望将比例设置为 1。
-
GP89 和 Mike 都成功了。感谢您的帮助!
标签: python layout wxpython sizer