如何在 Tkinter 中将 canvas 上的对象网格化?

How to grid objects on a canvas in Tkinter?

我目前正在使用 class Tkinter 在 python 中创建国际象棋游戏。我现在正在制作棋盘。这是我正在做的一些示例代码:

board_canvas = tkinter.Canvas(mainWindow, borderwidth=1)
board_canvas.grid(row=1, column=0, sticky='ew', columnspan=8, rowspan=8)

x = 100
y = 100

a1 = board_canvas.create_rectangle(0, 0, x, y, fill='black')
a2 = board_canvas.create_rectangle(0, 0, x, y, fill='white')
a3 = board_canvas.create_rectangle(0, 0, x, y, fill='black') 

我的问题是如何将我的 canvas 对象网格化,这样它们就不会彼此重叠。或者,如果这不起作用,我可以用什么更好的方式来布置我的棋盘?

每个矩形有四个坐标(x0, y0, x1, y1: (x0, y0) 是左上角,(x1, y1) 是右下角以外的像素点。所以你只需要增加每个正方形左上角和右下角的 x 坐标。

import tkinter
mainWindow =tkinter.Tk()

board_canvas = tkinter.Canvas(mainWindow, borderwidth=1)
board_canvas.grid(row=1, column=0, sticky='ew', columnspan=8, rowspan=8)

x = 100
y = 100

a1 = board_canvas.create_rectangle(0, 0, x, y, fill='black')
a2 = board_canvas.create_rectangle(100, 0, 200, y, fill='white')
a3 = board_canvas.create_rectangle(200, 0, 300, y, fill='black')

mainWindow.mainloop()

当然,对于整个棋盘,您可能希望使用循环递增值。