繁体   English   中英

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

[英]Using Tkinter to create rectangles for each cell of a 2d array

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

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

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

您必须使用width=0删除边框

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

Doc: 画布

在此处输入图片说明

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM