У меня есть это довольно простая настройка в flexgridsizer создающего 3 х 3 сетку: (быстрое примечание для легкого чтения: ПВС = классификаторы, PVP = панели)WxPython - Добавление StaticText изменяет панель
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 statictexts к середине верхней панели:
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"])
Наконец к вопросу: Добавление этих statictexts изменяет размеры верхней средней панели, чтобы быть значительно шире и выше. Есть ли способ заблокировать пропорции flexgridsizer? Или, может быть, я делаю что-то неправильно, что я могу изменить это, чтобы избежать такого поведения?
В поиске и устранении неисправностей я обнаружил, что для текста достаточно места, чтобы он соответствовал размеру оригинальной панели, даже если был задан большой размер шрифта. Я могу отбросить размер шрифта до 5, и он становится очень крошечным, но все же изменяет размер панели чуть-чуть крупнее, почти похоже на то, что он пробивается в панель, а не просто внутри.
Выглядит интересно, но это по-прежнему трудно для меня, чтобы понять именно эту проблему. Можете ли вы составить минимальный примерный код, который воспроизводит вашу проблему? http://stackoverflow.com/help/mcve – otterb
@otterb: Спасибо, что посмотрели. Я собирался сделать минимальный пример, когда придумал свой собственный ответ, который мне нравится. Я разместил его ниже. – linus72982