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

如何根据字典内元素数量为网格圆形设置对应填充色?

圆形网格着色实现方案

第一步:修正基础语法错误

你提供的颜色字典存在语法缺失,首先补全键值之间的冒号:

circle_colors_dict = {
    0: ['#7CB9E8', '#00308F', '#72A0C1', '#1CAC78'],
    1: ['#fd5c63', '#FBCEB1', '#A52A2A', '#FF7F50'],
    2: ['#F0E68C', '#FFC72C', '#87A96B', '#4B6F44']
}

第二步:实现匹配字典元素数量的着色逻辑

我们采用的规则为:根据行号匹配颜色字典的分组,根据列号匹配分组内的具体颜色,完全按照字典的元素数量自动循环适配,不需要硬编码数值。
完整函数实现如下:

def draw_shapes(circles, start_x, start_y, circle_colors_dict, size, num_rows, a_canvas):
    # 自动获取颜色分组总数、单组颜色数量,适配字典后续修改
    num_palette_groups = len(circle_colors_dict)
    num_colors_per_group = len(next(iter(circle_colors_dict.values())))
    
    y = start_y       
    for row in range(num_rows):
        # 按行号取模匹配颜色分组
        current_palette = circle_colors_dict[row % num_palette_groups]
        x = start_x
        for col in range(num_rows):
            # 按列号取模匹配分组内的具体颜色
            color = current_palette[col % num_colors_per_group]
            # 绘制圆形
            a_canvas.create_oval(x, y , x+size, y+size, fill=color)
            x += size
        y += size

可选规则调整

如果需要其他着色逻辑,可以修改颜色取值的计算方式:

  • 按网格位置行列和取模:color = circle_colors_dict[(row+col) % num_palette_groups][(row+col) % num_colors_per_group],实现斜向同色的效果
  • 按块分组着色:每N行N列为一个块,块内用完一个分组的所有颜色再切换下一个分组

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.29 08:24:04