使 tkinter 网格交错
Make a tkinter grid staggered
我在这里使用这个 grid.py 着色程序 https://scipython.com/blog/a-simple-colouring-grid/
制作网格的相关代码是
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)
我想知道我是否可以得到它,所以方块错开如下所示:
您可以 add/subtract 给定行上单元格的每个 x 坐标的“交错偏移”。由 'row' 的排名确定的值的符号通过将偏移量乘以 (-1)**row
.
也许是这样的?:
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))
您可能需要在 even/odd 行的 beginning/end 处插入半电池,具体取决于您喜欢的视觉效果。
我在这里使用这个 grid.py 着色程序 https://scipython.com/blog/a-simple-colouring-grid/ 制作网格的相关代码是
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)
我想知道我是否可以得到它,所以方块错开如下所示:
您可以 add/subtract 给定行上单元格的每个 x 坐标的“交错偏移”。由 'row' 的排名确定的值的符号通过将偏移量乘以 (-1)**row
.
也许是这样的?:
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))
您可能需要在 even/odd 行的 beginning/end 处插入半电池,具体取决于您喜欢的视觉效果。