Python 使一个三角网格交错

Python 使一个三角网格交错,python,tkinter,grid,tkinter-canvas,Python,Tkinter,Grid,Tkinter Canvas,我在这里使用这个grid.py着色程序 生成网格的相关代码是 self.cells = [] for iy in range(n): for ix in range(n): xpad, ypad = pad * (ix+1), pad * (iy+1) x, y = xpad + ix*xsize, ypad + iy*ysize rect = self.w.create_rectangle(x, y

我在这里使用这个grid.py着色程序 生成网格的相关代码是

self.cells = []
    for iy in range(n):
        for ix in range(n):
            xpad, ypad = pad * (ix+1), pad * (iy+1)
            x, y = xpad + ix*xsize, ypad + iy*ysize
            rect = self.w.create_rectangle(x, y, x+xsize,
                                       y+ysize, fill=UNFILLED)
            self.cells.append(rect)
我想知道我是否可以得到它,使方块交错如下所示:

您可以为给定行上单元格的每个x坐标添加/减去“交错偏移”。通过将偏移量乘以
(-1)**行
,由“行”的秩确定的值的符号

也许像这样

    self.cells = []
    for row in range(n):
        stagger_offset = (xsize // 4) * (-1)**row   # will be positive for even rows, negative otherwise
        y0 = pad * (row + 1) + row * ysize
        y1 = y0 + ysize
        for col in range(n):
            x0 = pad * (col + 1) + col * xsize + stagger_offset
            x1 = x0 + xsize
            self.cells.append(self.w.create_rectangle(x0, y0, x1, y1, fill=UNFILLED))
您可能需要在偶数行/奇数行的开头/结尾插入半个单元格,具体取决于您喜欢的视觉效果