Есть ли какое-то событие, когда все виджеты представлены в Kivy?

У меня есть 3 макета, размер 2-го зависит от ширины дочерних элементов 2-х других макетов:

def on_size(self, *args):
    self.left_panel.width = max(child.texture_size[0] for child in self.left_panel.children) + self.side_padding
    self.right_panel.width = max(child.texture_size[0] for child in self.right_panel.children) + self.side_padding
    available_space = self.width - self.left_panel.width - self.right_panel.width
    if available_space > self.height:
        self.middle_panel.size = (self.height, self.height)
        extra = (self.width - self.height - self.left_panel.width - self.right_panel.width) // 2
        self.left_panel.width += extra
        self.right_panel.width += extra
    else:
        self.middle_panel.size = (available_space, available_space)
    self.middle_panel.calculate_points()
    self.middle_panel.clear_widgets()
    self.middle_panel.redraw_blocks()

Корректно работает только в 50% случаев (случайно) почему-то. Если он загружает Wearg, он становится правильным после того, как я изменяю размер окна. Также на данный момент я вызываю это, когда срабатывает on_size() каждого дочернего элемента 2 других макетов, это плохая идея. Есть ли какое-то событие или еще, когда все загружено/представлено?

ОБНОВЛЕНИЕ:

Так и должно быть (иногда так и есть). введите здесь описание изображения

Но иногда случайным образом возникает следующая проблема (см. кнопки справа): введите здесь описание изображения

ОБНОВЛЕНИЕ:

Пока я называю это:

class SideButton(Button):
    def on_size(self, *args):
        self.parent.parent.on_size()

Я знаю, что это плохая идея, потому что это вызывает что-то около 30-50 раз, но я не могу придумать что-то лучше.


person Necronomicron    schedule 11.08.2014    source источник
comment
Похоже, вы путаете width и height. Но если вы помещаете эти макеты в BoxLayout и устанавливаете для left_panel и right_panel size_hint_x значение None, тогда середина должна автоматически заполнить дополнительное пространство.   -  person kitti    schedule 12.08.2014
comment
@RyanP Извините, я забыл, что size_hint_x уже None. Но это не имеет значения.   -  person Necronomicron    schedule 12.08.2014