散射布局

在 1.6.0 版本加入.

该布局的行为与 RelativeLayout 完全一致。当向 ScatterLayout 添加一个位置为 (0,0) 的控件时,若更改 ScatterLayout 的位置,子控件也会随之移动。子控件的坐标保持为 (0,0),因为它们相对于父布局而言。

然而,由于 ScatterLayout 是通过 Scatter 控件实现的,您也可以像操作普通 Scatter 控件一样,通过触摸或点击来平移、旋转和缩放布局,而子控件将按预期方式表现。

与Scatter不同,Layout更倾向于使用“提示”属性,如size_hint、size_hint_x、size_hint_y和pos_hint。

备注

ScatterLayout 被实现为 FloatLayout 嵌套在 Scatter 内部。

警告

由于实际的 ScatterLayout 是一个 Scatter,其 add_widgetremove_widget 函数被重写,以自动将子元素添加到嵌入的 Scattercontent 属性访问)中。因此,如果你想访问添加的子元素,需要使用 self.content.children 而不是 self.children

警告

: ScatterLayout 在 1.7.0 版本中引入,此前版本中被称为 RelativeLayout。现在,RelativeLayout 是一个优化实现,仅使用位置变换来避免 Scatter 所涉及的一些较重计算。

class kivy.uix.scatterlayout.ScatterLayout(**kw)[源代码]

基类:Scatter

ScatterLayout 类,更多信息请参阅模块文档。

add_widget(*args, **kwargs)[源代码]

将此小部件添加为当前小部件的子级。

参数:
widgetWidget

要添加到我们子控件列表中的控件。

index:整数,默认值为0

在列表中插入控件的索引。请注意,默认值0意味着控件被插入到列表的开头,因此会绘制在其他同级控件之上。关于索引和控件层次结构的完整讨论,请参阅 控件编程指南

在 1.0.5 版本加入.

canvas: 字符串,默认为 None

用于添加控件画布的Canvas。可以是'before'、'after'或None以使用默认画布。

在 1.9.0 版本加入.

>>> from kivy.uix.button import Button
>>> from kivy.uix.slider import Slider
>>> root = Widget()
>>> root.add_widget(Button())
>>> slider = Slider()
>>> root.add_widget(slider)
clear_widgets(*args, **kwargs)[源代码]

移除该部件的所有(或指定的):attr:~Widget.children。如果指定了'children'参数,它应为当前部件子项的一个列表(或过滤后的列表)。

在 1.8.0 版本发生变更: children 参数可用于指定你想要移除的子项。

在 2.1.0 版本发生变更: 指定一个空的``children``列表不会改变现有控件。此前,它会被视为``None``,从而移除所有子控件。

remove_widget(*args, **kwargs)[源代码]

从该部件的子部件中移除一个部件。

参数:
widgetWidget

要从我们的子控件列表中移除的控件。

>>> from kivy.uix.button import Button
>>> root = Widget()
>>> button = Button()
>>> root.add_widget(button)
>>> root.remove_widget(button)
class kivy.uix.scatterlayout.ScatterPlaneLayout(**kwargs)[源代码]

基类:ScatterPlane

ScatterPlaneLayout 类,更多信息请参阅模块文档。

类似于ScatterLayout,但基于ScatterPlane——因此输入不受边界限制。

在 1.9.0 版本加入.

collide_point(x, y)[源代码]

检查点 (x, y) 是否位于控件的轴对齐边界框内。

参数:
x:数值

点的x位置(在父坐标中)

y:数值

点的y坐标(在父坐标中)

返回:

一个布尔值。如果该点在边界框内,则为True,否则为False。

>>> Widget(pos=(10, 10), size=(50, 50)).collide_point(40, 40)
True