VDict

完全限定名: manim.mobject.types.vectorized\_mobject.VDict

VDict(mapping_or_iterable={}, show_keys=False, **kwargs)[源]

基类: VMobject

一个类似 VGroup 的类,也提供通过键访问子对象,像 Python 字典一样。

参数:
  • mapping_or_iterable (Mapping[Hashable, VMobject] | Iterable[tuple[Hashable, VMobject]]) – 指定键和 mobject 键值映射的参数。

  • show_keys (bool) – 是否也显示与 mobject 关联的键。这在调试时可能很有用,尤其当 VDict 中有大量 mobject 时。默认为 False。

  • kwargs – 要传递给 Mobject 的其他参数。

show_keys

是否也显示与 mobject 关联的键。这在调试时可能很有用,尤其当 VDict 中有大量 mobject 时。显示时,键位于 mobject 的左侧。默认为 False。

类型:

bool

submob_dict

是用于将键绑定到 mobject 的实际 Python 字典。

类型:

dict

示例

示例:ShapesWithVDict

from manim import *

class ShapesWithVDict(Scene):
    def construct(self):
        square = Square().set_color(RED)
        circle = Circle().set_color(YELLOW).next_to(square, UP)

        # create dict from list of tuples each having key-mobject pair
        pairs = [("s", square), ("c", circle)]
        my_dict = VDict(pairs, show_keys=True)

        # display it just like a VGroup
        self.play(Create(my_dict))
        self.wait()

        text = Tex("Some text").set_color(GREEN).next_to(square, DOWN)

        # add a key-value pair by wrapping it in a single-element list of tuple
        # after attrs branch is merged, it will be easier like `.add(t=text)`
        my_dict.add([("t", text)])
        self.wait()

        rect = Rectangle().next_to(text, DOWN)
        # can also do key assignment like a python dict
        my_dict["r"] = rect

        # access submobjects like a python dict
        my_dict["t"].set_color(PURPLE)
        self.play(my_dict["t"].animate.scale(3))
        self.wait()

        # also supports python dict styled reassignment
        my_dict["t"] = Tex("Some other text").set_color(BLUE)
        self.wait()

        # remove submobject by key
        my_dict.remove("t")
        self.wait()

        self.play(Uncreate(my_dict["s"]))
        self.wait()

        self.play(FadeOut(my_dict["c"]))
        self.wait()

        self.play(FadeOut(my_dict["r"], shift=DOWN))
        self.wait()

        # you can also make a VDict from an existing dict of mobjects
        plain_dict = {
            1: Integer(1).shift(DOWN),
            2: Integer(2).shift(2 * DOWN),
            3: Integer(3).shift(3 * DOWN),
        }

        vdict_from_plain_dict = VDict(plain_dict)
        vdict_from_plain_dict.shift(1.5 * (UP + LEFT))
        self.play(Create(vdict_from_plain_dict))

        # you can even use zip
        vdict_using_zip = VDict(zip(["s", "c", "r"], [Square(), Circle(), Rectangle()]))
        vdict_using_zip.shift(1.5 * RIGHT)
        self.play(Create(vdict_using_zip))
        self.wait()
class ShapesWithVDict(Scene):
    def construct(self):
        square = Square().set_color(RED)
        circle = Circle().set_color(YELLOW).next_to(square, UP)

        # create dict from list of tuples each having key-mobject pair
        pairs = [("s", square), ("c", circle)]
        my_dict = VDict(pairs, show_keys=True)

        # display it just like a VGroup
        self.play(Create(my_dict))
        self.wait()

        text = Tex("Some text").set_color(GREEN).next_to(square, DOWN)

        # add a key-value pair by wrapping it in a single-element list of tuple
        # after attrs branch is merged, it will be easier like `.add(t=text)`
        my_dict.add([("t", text)])
        self.wait()

        rect = Rectangle().next_to(text, DOWN)
        # can also do key assignment like a python dict
        my_dict["r"] = rect

        # access submobjects like a python dict
        my_dict["t"].set_color(PURPLE)
        self.play(my_dict["t"].animate.scale(3))
        self.wait()

        # also supports python dict styled reassignment
        my_dict["t"] = Tex("Some other text").set_color(BLUE)
        self.wait()

        # remove submobject by key
        my_dict.remove("t")
        self.wait()

        self.play(Uncreate(my_dict["s"]))
        self.wait()

        self.play(FadeOut(my_dict["c"]))
        self.wait()

        self.play(FadeOut(my_dict["r"], shift=DOWN))
        self.wait()

        # you can also make a VDict from an existing dict of mobjects
        plain_dict = {
            1: Integer(1).shift(DOWN),
            2: Integer(2).shift(2 * DOWN),
            3: Integer(3).shift(3 * DOWN),
        }

        vdict_from_plain_dict = VDict(plain_dict)
        vdict_from_plain_dict.shift(1.5 * (UP + LEFT))
        self.play(Create(vdict_from_plain_dict))

        # you can even use zip
        vdict_using_zip = VDict(zip(["s", "c", "r"], [Square(), Circle(), Rectangle()]))
        vdict_using_zip.shift(1.5 * RIGHT)
        self.play(Create(vdict_using_zip))
        self.wait()

方法

添加

将键值对添加到 VDict 对象。

add_key_value_pair

一个由 add() 使用的实用函数,用于将键值对添加到 submob_dict

get_all_submobjects

获取与特定 VDict 对象关联的所有子对象。

移除

从具有键 keyVDict 对象中移除 mobject。

属性

animate (动画)

用于动画化 self 的任何方法的应用。

animation_overrides (动画覆盖)

颜色

depth (深度)

mobject 的深度。

fill_color (填充颜色)

如果存在多种颜色(用于渐变),则返回第一种颜色

height (高度)

mobject 的高度。

n_points_per_curve (每条曲线的点数)

sheen_factor (光泽因子)

stroke_color (描边颜色)

width (宽度)

mobject 的宽度。

_original__init__(mapping_or_iterable={}, show_keys=False, **kwargs)

初始化自身。有关准确签名,请参阅 help(type(self))。

参数:
  • mapping_or_iterable (Mapping[Hashable, VMobject] | Iterable[tuple[Hashable, VMobject]])

  • show_keys (bool)

返回类型:

add(mapping_or_iterable)[源]

将键值对添加到 VDict 对象。

此外,它在内部将值添加到 submobjects 列表Mobject 中,该列表负责实际的屏幕显示。

参数:

mapping_or_iterable (Mapping[Hashable, VMobject] | Iterable[tuple[Hashable, VMobject]]) – 指定键和 mobject 键值映射的参数。

返回:

返回调用此方法的 VDict 对象。

返回类型:

VDict

示例

常规用法

square_obj = Square()
my_dict.add([("s", square_obj)])
add_key_value_pair(key, value)[源]

一个由 add() 使用的实用函数,用于将键值对添加到 submob_dict。不建议在外部使用。

参数:
  • key (Hashable) – 要添加的子对象的键。

  • value (VMobject) – 与键关联的 mobject

返回类型:

抛出:

TypeError – 如果值不是 VMobject 的实例

示例

常规用法

square_obj = Square()
self.add_key_value_pair("s", square_obj)
get_all_submobjects()[源]

获取与特定 VDict 对象关联的所有子对象。

返回:

VDict 对象关联的所有子对象。

返回类型:

dict_values

示例

常规用法

for submob in my_dict.get_all_submobjects():
    self.play(Create(submob))
remove(key)[源]

从具有键 keyVDict 对象中移除 mobject。

此外,它在内部将 mobject 从 submobjects 列表Mobject 中移除(该列表负责将其从屏幕上移除)。

参数:

key (Hashable) – 要移除的子对象的键。

返回:

返回调用此方法的 VDict 对象。

返回类型:

VDict

示例

常规用法

my_dict.remove("square")