Как сделать динамическое количество горизонтальных BoxSizer? - PullRequest
1 голос
/ 03 июля 2010

У меня есть функция, которая вычисляет количество изображений, которые могут быть отображены на экране. Если изображений больше, чем тех, которые можно вывести на экран, я изменяю размеры изображений, пока все они не могут появиться.

Затем я хочу отобразить их с одним вертикальным сортировщиком ящиков и несколькими горизонтальными сортировщиками ящиков!

Горизонтальное количество размеров ящиков является динамическим, оно может быть только одно или несколько в зависимости от количества изображений.

Как определить несколько размеров ящиков и добавить их в вертикальный размер ящика?

Ответы [ 2 ]

3 голосов
/ 03 июля 2010

Почему бы просто не сделать горизонтальные сортировщики в цикле, .Add передав их в один вертикальный калибратор?Например,

def HorzInVert(n):
  vert = wx.BoxSizer(wx.VERTICAL)
  horizontals = []
  for i in range(n):
    horz = wx.BoxSizer(wx.HORIZONTAL)
    vert.Add(horz,1, wx.ALL, 0)
    horizontals.append(horz)
  return vert, horizontals

Вы можете вызвать эту простую функцию из любого места, она возвращает вертикальный размер и список горизонтальных размеров n в нем - тогда вызывающая сторона добавляет материал соответствующим образом к горизонтальным ползункам, соответствующийSetSizer с вертикальным сортировщиком в качестве аргумента и вертикальным сортировщиком .Fit.Конечно, вы можете сделать это настолько изящным, насколько захотите, используя всевозможные аргументы, чтобы точно контролировать выполнение Add s.

0 голосов
/ 04 июля 2010

wx.GridSizer - это ответ!

...