如何在Tkinter画布上网格化物体?

2024-05-18 06:11:53 发布

您现在位置:Python中文网/ 问答频道 /正文

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

我的问题是如何网格化我的画布对象,使它们不只是坐在彼此的顶部。或者,如果这不起作用,我有什么更好的方式来布局我的棋盘?在


Tags: 代码board游戏示例棋盘tkintercreatefill
1条回答
网友
1楼 · 发布于 2024-05-18 06:11:53

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

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

相关问题 更多 >