我有一个相当简单的 flexgridsizer 设置,它创建了一个 3 x 3 网格:(便于阅读的快速注释:pvs = sizers,pvp = panel)
pvs["flex"] = wx.FlexGridSizer(rows = 3, cols = 3, vgap = 0, hgap = 0)
for index, vert in enumerate(pv.vertNames):
for horiz in pv.horizNames:
pvp["{0}_{1}".format(vert, horiz)] = wx.Panel(self)
pvp["{0}_{1}".format(vert, horiz)].SetBackgroundColour(c.COLORS["black"])
for panel in pvp.values():
pvs["flex"].Add(panel, flag = wx.EXPAND)
proportions = (1, 6, 1)
for index, prop in enumerate(proportions):
pvs["flex"].AddGrowableCol(index, prop)
pvs["flex"].AddGrowableRow(index, prop)
self.SetSizer(pvs["flex"])
我没有明确设置面板的大小,它们的大小由可增长的行和列比例决定。
后来,我在顶部中间面板中添加了 2 个静态文本:
pvs[me] = {"vert": wx.BoxSizer(wx.VERTICAL)}
pvt[me] = {}
panel.SetForegroundColour(c.COLORS["blue"])
pvt[me]["title"] = wx.StaticText(panel, label = c.TITLE)
pvt[me]["title"].SetOwnFont(titleFont)
pvt[me]["subTitle"] = wx.StaticText(panel, label = c.SUBTITLE)
pvt[me]["subTitle"].SetOwnFont(subFont)
pvs[me]["vert"].Add(pvt[me]["title"], flag = wx.ALIGN_CENTER)
pvs[me]["vert"].Add(pvt[me]["subTitle"], flag = wx.ALIGN_CENTER)
panel.SetSizer(pvs[me]["vert"])
最后是问题:添加这些静态文本会调整顶部中间面板的大小,使其显着更宽更高。有没有办法锁定 flexgridsizer 比例?或者也许我做错了什么我可以改变以避免这种行为?
在故障排除过程中,我发现即使字体很大,文本也有足够的空间适应原始面板大小。我可以将字体大小降低到 5,它会变得非常小,但仍然会将面板的大小调整得稍微大一点,这几乎就像它正在推入面板而不是仅仅适合里面。