wxPython GridSizer - работа с пустыми ячейками - PullRequest
4 голосов
/ 30 января 2011

Я делаю свой первый набег на программирование GUI и пытаюсь разобраться с wxPython. Я пытаюсь использовать wxGlade, но он немного глючит.

Я делаю макет с помощью GridSizer.

Я понял, что каждый раз, когда вы добавляете что-то в классификатор, оно помещается в следующую ячейку. Это означает, что если у вас есть пустая ячейка, вам нужно заполнить ее чем-нибудь. Я прав?

Это макет, к которому я иду (скриншот wxGlade):

wxGlade layout screenshot

Проблема в том, что, генерируя код, я получаю это:

enter image description here

    grid_sizer_1 = wx.GridSizer(3, 3, 0, 0)
    grid_sizer_1.Add(self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL, 0)
    grid_sizer_1.Add(self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_right, 0, wx.ALIGN_CENTER_VERTICAL, 0)
    grid_sizer_1.Add(self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL, 0)

Кажется, потому что кнопка «Вниз» помещается в 7-ю ячейку вместо 8-й.

Какой стандартный способ борьбы с этим? Вы бы поместили какой-нибудь фиктивный виджет, чтобы заполнить пустую ячейку? Если да, то какой виджет? Или я использую не тот тип сортировщика?

Спасибо!

Ответы [ 2 ]

9 голосов
/ 30 января 2011

Как вы сказали ... добавление фиктивного виджета (пустой статический текст) работает хорошо.Вы также можете использовать AddMany () вместо нескольких add ().

grid_sizer_1 = wx.GridSizer(3, 3, 0, 0)
grid_sizer_1.AddMany( [
  (self.button_last_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_up, 0, wx.ALIGN_BOTTOM|wx.ALIGN_CENTER_HORIZONTAL),
  (self.button_next_page, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_left, 0, wx.ALIGN_RIGHT|wx.ALIGN_CENTER_VERTICAL),
  (self.button_select, 0, wx.ALIGN_CENTER_HORIZONTAL|wx.ALIGN_CENTER_VERTICAL),
  (self.button_right, 0, wx.ALIGN_CENTER_VERTICAL),
  (wx.StaticText(self, -1, ''), 0, wx.EXPAND),
  (self.button_down, 0, wx.ALIGN_CENTER_HORIZONTAL) ] )
4 голосов
/ 23 июня 2013

Я более знаком с использованием (0,0), что означает добавление растягиваемого размера в сортировщик.Таким образом, можно создать один объект, такой как empty_cell = (0,0), а затем вставить empty_cell везде, где необходимо пустое место в вашем классификаторе (где, например, wx.StaticText используется в принятом ответе).

...