python - 在创建循环时给多个矩形(使用图形模块)不同的名称?
问题描述
我正在尝试使用图形在 python 中编写生命游戏,但如果不单独创建框,我无法给出我创建的网格中的每个矩形:
from graphics import *
import tkinter
import time
#create a window:
win = GraphWin('Game Of Life', 600, 600)
x = 0
y = 0
#create a grid:
for count in range(20):
for count in range(20):
rect = Rectangle(Point(x, y), Point((x + 20), (y + 20)))
rect.setOutline('black')
rect.setFill('white')
rect.draw(win)
x = x + 20
x = 0
y = y + 20
#define updating a rectangle:
def update(a):
if a.config["fill"] == "black":
a.setFill('white')
if a.config["fill"] == "white":
a.setFill('black')
解决方案
因为您试图在同一个变量中创建所有这些矩形,所以每个新的矩形都会覆盖前一个。
您可以尝试将这些矩形添加到列表或其他数据类型中,以便对其进行存储。
也许是这样的:
from graphics import *
import tkinter
import time
#list of rectangles
rect = []
#create a window:
win = GraphWin('Game Of Life', 600, 600)
x = 0
y = 0
#create a grid:
for count in range(20):
for count in range(20):
rect.append(Rectangle(Point(x, y), Point((x + 20), (y + 20))))
rect[-1].setOutline('black')
rect[-1].setFill('white')
rect[-1].draw(win)
x = x + 20
x = 0
y = y + 20
#define updating a rectangle:
def update(a):
if a.config["fill"] == "black":
a.setFill('white')
if a.config["fill"] == "white":
a.setFill('black')
矩形被附加到列表中,然后我们使用rect[-1]访问它。
推荐阅读
- gpu - ● libvirtd.service ,Active: inactive (dead), Initialization of QEMU state driver failed: invalid argument: 无法解析用户'libvirt-qemu'
- javascript - 在同级元素的单击事件中从内存中删除 Image() 对象 - JavaScript
- sql - SQL Server = 创建存储过程
- excel - 有没有办法从 VBA 代码中删除“选择”关键字?
- javascript - 是否可以仅在使用 jQuery 将鼠标悬停在选中的单选按钮上时显示工具提示
- javascript - 如何制作一个循环,在 moment.js 中添加几小时的课程?
- javascript - 如何在 p5.js 中引导声音 - 双耳声音
- swift - 如何使具有关联值的 Swift 枚举符合 Codable?
- c++ - 私有静态 Consexpr 成员变量在 Main 中不可访问?
- python - Opencv HoughCircles 缺少明显的圆圈