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
相关产品推荐
相关产品推荐

