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

Python使用graphics模块循环创建矩形时如何为每个矩形赋予不同名称

生命游戏网格单元格存储解决方案

实现逻辑

  • 无需为每个矩形单独声明独立变量,通过二维列表存储所有创建的矩形实例,后续通过行列下标即可快速定位任意单元格
  • 修正原有代码中循环变量重名、update函数逻辑错误的问题

修改后代码

from graphics import *  
import tkinter  
import time 

# 创建窗口
win = GraphWin('Game Of Life', 600, 600)    
x = 0   
y = 0
# 初始化二维列表存储所有单元格
grid = []

# 生成网格
for row in range(20):
    # 每行先新建一个空列表存储当前行的单元格
    current_row = []
    for col in range(20):
        rect = Rectangle(Point(x, y), Point((x + 20), (y + 20)))  
        rect.setOutline('black')  
        rect.setFill('white') 
        rect.draw(win)
        # 把当前矩形加入当前行列表
        current_row.append(rect)
        x = x + 20
    # 把当前行加入二维网格列表
    grid.append(current_row)
    x = 0   
    y = y + 20  

# 定义单元格颜色翻转函数
def update_cell(cell):  
    if cell.config["fill"] == "black": 
        cell.setFill('white')
    # 用elif避免两次判断导致颜色翻转后又被改回去
    elif cell.config["fill"] == "white": 
        cell.setFill('black')

使用示例

  • 翻转第3行第5列的单元格颜色:update_cell(grid[2][4])(下标从0开始计数)
  • 批量遍历所有单元格:直接嵌套遍历grid二维列表即可

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.10.14 04:27:03