Как я могу установить разрыв в Vertical BoxSizer? - PullRequest
6 голосов
/ 04 октября 2011

Как мне установить разрыв в Vertical BoxSizer? Что в Vertival BoxSizer аналогичный или альтернативный метод SetVGap (который устанавливает вертикальный разрыв (в пикселях) между ячейками в классификаторе) в GridSizer?

Ответы [ 4 ]

9 голосов
/ 04 октября 2011

Есть несколько способов добавить пробел в sizer.

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(widget, proportion=0, style=wx.ALL, border=5)

Приведенный выше код добавит виджет с 5-пиксельной рамкой со всех сторон. Если вы хотите поместить некоторое пространство между двумя виджетами, вы можете сделать одно из следующего:

sizer = wx.BoxSizer(wx.VERTICAL)
sizer.Add(widget, proportion=0, style=wx.ALL, border=5)
sizer.AddSpacer(10) 
# or sizer.Add((0,0))
sizer.Add(anotherWidget, proportion=0, style=wx.ALL, border=5)

Хорошая вещь в sizer.Add ((0,0)) заключается в том, что вы можете добавить его с пропорцией 1 (один), если хотите, и это подтолкнет все следующие виджеты вниз. Я использую его, чтобы немного больше контролировать размещение виджетов.

Смотри также http://www.wxpython.org/docs/api/wx.Sizer-class.html

5 голосов
/ 04 октября 2011

В wx.BoxSizer s нет параметра гэпа (как вы сказали, есть в GridSizer).Способ создать разрыв - установить границу в ваших виджетах.Это можно сделать с помощью стилей: wx.ALL, wx.BOTTOM и / или wx.TOP.

Например:

szr = wx.BoxSizer(wx.VERTICAL)
szr.Add(self.button_1, 0, wx.TOP|wx.BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 5)

добавит центрированный виджет (кнопка в моем коде) в поле с границей из 5 точек сверху и снизу.

Покажите, если вы напишите:

vgap = 5
szr = wx.BoxSizer(wx.VERTICAL)
szr.Add(self.button_1, 0, wx.TOP, vgap)
szr.Add(self.button_2, 0, wx.TOP, vgap)
szr.Add(self.button_3, 0, wx.TOP, vgap)

вы получите 3 кнопки с защелкой, аналогично тому, что вы сделали бы с SetVGap, и вы также можете контролировать разделение между слотами, установив vgap.ответы указывают, что вы также можете вставлять разделители между вашими виджетами, чтобы получить тот же эффект, но это кажется мне более чистым (без дополнительных строк "sizer.add"), если вы хотите что-то эквивалентное сеткам vgap.

5 голосов
/ 04 октября 2011

Я предполагаю, что вы имеете в виду вертикальный размер поля, например:

wxBoxSizer * szr = new( wxVERTICAL );

Следующий вызов добавит 10 пикселей 'вертикального зазора'

szr->AddSpacer(10);

В Python, я думаю, этобудет выглядеть примерно так

szr = wx.BoxSizer( wxVERTICAL )

... add stuff above gap

szr.AddSpacer(10)

... add stuff below gap
2 голосов
/ 04 октября 2011

Также может быть интересно: найдите название "wx.BoxSizer" в

http://zetcode.com/wxpython/layout/

...