group

class janim.items.group.Group(*items: T, **kwargs)

基类:Points, Generic[T]

物件组

将物件组成一组

static from_iterable(items: Iterable, **kwargs) Group
class janim.items.group.NamedGroupMixin(*items: T, named: dict[str, T], **kwargs)

基类:Group, Generic

方便用于继承的基础类,例如被 Axes 继承

另见 NamedGroup

add(*items: T, prepend=False, **named_items: T) Self

向该物件添加子物件,并且可以通过具名参数设定具名子物件

参数:
  • items -- 要添加的子物件

  • named_items -- 要添加的具名子物件

  • prepend -- 默认为 False,如果为 True,那么插入到子物件列表的开头

insert(index: int, *items: T, **named_items: T) Self

在指定索引位置插入子物件,并且可以通过具名参数设定具名子物件

参数:
  • index -- 插入位置的索引

  • items -- 要插入的子物件

  • named_items -- 要插入的具名子物件

remove(*items_or_names: T | str) Self

从该物件移除子物件

参数:

items_or_names -- 要移除的子物件或具名子物件的名称

shuffle() Self

随机打乱子物件的顺序

备注

该方法使用 random.shuffle() 进行随机打乱

如果需要可重复的随机结果,请在调用此方法前使用 random.seed() 设置随机数种子

set_name(item: Item, name: str) Self

设置一个已有的子物件的对应名称

参数:
  • item -- 一个已有的子物件

  • name -- 要设置的名称

by_name(key: str) T

根据名称获取子物件

resolve() dict[str, T]

将具名子物件的内部索引关系整体解析为到物件的映射

返回:

名称到子物件的映射字典

children_with_name() list[tuple[T, str | None]]

返回的列表中与子物件列表相似,但是每个元素是一个包含 (单个子物件, 其对应的名称) 的元组,如果不是具名子物件则名称为 None

store(**kwargs)
restore(other: NamedGroupMixin) Self
get_named_indices() dict[str, int]
copy(*, root_only: bool = False)

复制物件

class janim.items.group.NamedGroup(*items: T, **named_items: T)

基类:NamedGroupMixin, Generic

具名物件组,可以使用类似 group['name'] 的形式来获取其中的具名物件

参数:
  • items -- 初始物件

  • named_items -- 初始具名物件

也可以使用 add()insert() 方法,传入具名参数来新增具名子物件

示例:

group = NamedGroup(
    text=Text('lorem'),
    shape=Circle()
)
group.points.arrange(DOWN, aligned_edge=LEFT)

self.play(
    group['text'].anim.color.set(GREEN),
    group['shape'].anim.color.set(YELLOW),
    lag_ratio=0.5
)

def updater(group: NamedGroup, p: UpdaterParams) -> None:
    group.points.rotate(TAU * p.alpha)
    group['text'].color.mix(BLUE, p.alpha)

self.play(
    GroupUpdater(group, updater)
)

备注

无法像 Group 那样使用初始化参数

group = Group(..., color=RED)

为了解决这一问题,你可以写为

group = NamedGroup(...)
group.set(color=RED)

备注

如果你想要将 NamedGroup 作为父类并继承,使用 NamedGroupMixin 会是更好的选择

因为它不会将所有 **kwargs 都吃掉,而是使用显式的 named 参数来指定具名子物件字典