You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在Gizeh中修改或获取Element的填充颜色?

修改和获取Gizeh元素的填充颜色

Gizeh的元素(比如你示例里的圆形)并没有直接暴露fill这类可直接赋值的属性,所有创建时传入的参数都统一存在元素对象的_args内部字典里。要修改或获取填充颜色,需要通过这个字典操作:

修改填充颜色

import gizeh as gz

circle = gz.circle(10, xy=(100, 100), fill=(1, 0, 0))
# 修改填充颜色
circle._args["fill"] = (0, 1, 0)

获取填充颜色

current_fill = circle._args.get("fill")
print(current_fill)  # 输出 (0,1,0)

为什么直接circle.fill = (0,1,0)无效?

因为Gizeh的Element类(包括Circle这类具体元素)初始化时,并没有把fill绑定为实例属性,而是将所有构造参数统一存入_args字典。绘制元素时,程序会从这个字典读取参数配置绘图上下文。你直接赋值circle.fill只是给对象新增了一个无关属性,不会影响实际的填充颜色。

源码中的存储逻辑

查看源码时会发现,所有Element子类(比如Circle)的__init__方法都会调用父类Element的构造函数,而Element的__init__会把传入的参数打包存入self._args。以Circle类为例:

class Circle(Element):
    def __init__(self, r, xy=(0,0), fill=None, stroke=None, stroke_width=1,
                 stroke_linecap="butt", stroke_linejoin="miter"):
        Element.__init__(self, "circle", locals())

这里的locals()会把当前方法的局部变量(除self外)转为字典,传给Element的构造函数,最终存入self._args中。

内容的提问来源于stack exchange,提问作者KarlTheGreat

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.18 17:45:38