如何在Tkinter的画布上网格对象?

时间:2018-03-15 02:16:17

标签: python canvas tkinter chess

我目前正在使用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') 

我的问题是如何对我的画布对象进行网格化,这样它们就不会只是坐在彼此之上。或者,如果这不起作用,我可以在棋盘上布置什么更好的方法?

1 个答案:

答案 0 :(得分:1)

每个矩形有四个坐标(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()

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