我创建了一个二维数组,如下所示:
a, b = 150, 150;
density = .5
def RedOrGreen():
c = random.uniform(0,1)
if c > density:
d = "GREEN"
else:
d = "RED"
return d
Matrix = [[RedOrGreen() for x in range(a)] for y in range(b)]
我想用tkinter创建一个正方形,里面有很多正方形。这些正方形由我的2d数组表示。我想根据2d数组中的值使它们变为绿色或红色。我尝试通过遍历2d数组并创建如下矩形来实现此目的:
self.forest = tk.Canvas(self, width = 500, height = 500)
for x in range(a):
for y in range(b):
self.forest.create_rectangle(x,y,x+1,y+1, fill = Matrix[x][y])
self.forest.pack()
为简单起见,我省略了一些代码,但是您可以在此处查看整个代码: https://repl.it/repls/WindingUnwelcomeLibrary
但是,此解决方案不起作用。我不确定为什么它不起作用,因为在我的头上,我遍历2d数组,然后创建一个相应的矩形。如果您有任何想法请告诉我。
编辑: 它不起作用的原因是因为它仅显示黑色画布。它没有用我想要的颜色正确填充矩形。我没有在repl.it上运行它,只是在那里显示完整的代码。
答案 0 :(得分:2)
每个rectangle
都有黑色边框,该边框隐藏其他矩形。最后,您只有黑色的画布。
您必须使用width=0
self.forest.create_rectangle(x, y, x+1, y+1, fill=Matrix[x][y], width=0)
文档:Canvas