使用Tkinter为2d数组的每个像元创建矩形

时间:2019-08-05 23:59:18

标签: python tkinter

我创建了一个二维数组,如下所示:

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上运行它,只是在那里显示完整的代码。

1 个答案:

答案 0 :(得分:2)

每个rectangle都有黑色边框,该边框隐藏其他矩形。最后,您只有黑色的画布。

您必须使用width=0

删除边框
 self.forest.create_rectangle(x, y, x+1, y+1, fill=Matrix[x][y], width=0)

文档:Canvas

enter image description here