当所有的小部件都用Kivy呈现时,有没有什么事件?

2024-09-28 22:18:53 发布

您现在位置:Python中文网/ 问答频道 /正文

我有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%的情况下(随机)正常工作。如果它加载worng,它将在我调整窗口大小后变得正确。现在,当另外两个布局的每个子布局的on_size()触发时,我也会调用它,这是个坏主意。当所有的东西都被加载/呈现时,是否会发生一些事件?在

更新:

这就是它应该是这样的(有时也是如此)。 enter image description here

但有时下一个问题会随机发生(见右边的按钮): enter image description here

更新:

现在我称之为:

^{pr2}$

我知道这不是个好主意,因为它会触发smth 30-50次,但我无法更好地发明smth。在


Tags: selfrightchildmiddlesizeonspacewidth