VDict¶
完全限定名: manim.mobject.types.vectorized\_mobject.VDict
- 类 VDict(mapping_or_iterable={}, show_keys=False, **kwargs)[源]¶
基类:
VMobject
一个类似 VGroup 的类,也提供通过键访问子对象,像 Python 字典一样。
- 参数:
- 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()
使用的实用函数,用于将键值对添加到submob_dict
。获取与特定
VDict
对象关联的所有子对象。从具有键 key 的
VDict
对象中移除 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))。
- add(mapping_or_iterable)[源]¶
将键值对添加到
VDict
对象。此外,它在内部将值添加到 submobjects
列表
的Mobject
中,该列表负责实际的屏幕显示。- 参数:
mapping_or_iterable (Mapping[Hashable, VMobject] | Iterable[tuple[Hashable, VMobject]]) – 指定键和 mobject 键值映射的参数。
- 返回:
返回调用此方法的
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)