wxPython GridSizer - работа с пустыми ячейками
Я делаю свой первый набег на программирование GUI, и я пытаюсь справиться с wxPython. Я пытаюсь использовать wxGlade, но он немного глючит.
Я делаю макет с помощью GridSizer.
Я понял, что каждый раз, когда вы добавляете что-то в классификатор, оно помещается в следующую ячейку. Это означает, что если у вас есть пустая ячейка, вам нужно заполнить ее чем-нибудь. Я прав?
Это макет, к которому я иду (скриншот wxGlade):
Проблема в том, что генерируя код, я получаю это:
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 ответа
Как вы сказали... добавление фиктивного виджета (пустой статический текст) работает хорошо. Вы также можете использовать 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) ] )
Я более знаком с использованием (0,0)
что означает добавить растяжимый размер к классификатору. Таким образом, можно создать один объект, как empty_cell = (0,0)
а затем придерживаться empty_cell
везде, где пустое место необходимо в вашем классификаторе (где, например, wx.StaticText используется в принятом ответе).