按位置删除文本

时间:2019-05-07 11:45:29

标签: python tkinter

我是python和tkinter的新手,并且一段时间以来我一直在寻找解决方案。

我正在创建一个数独板,并使用tkinter填充已知值。我想回去删除一些已知位置的数字,因为我不知道如何使用删除功能。

我的电路板的构建如下:

for i in range(10)
    color = "blue" if i%3 ==0 else "gray"
    thickness = 5 if i% 3 ==0 else 1
    x0 = 10 + i* 5
    y0 = 10
    x1 = 10+ i * 5
    y1 = 500 - 10
    canvas.create_line(x0,y0,x1,y1, fill=color, width=thickness)

    x0 = 10
    y0 = 10 + i * 5
    x1 = 500 - 10
    y1 10 + i *5
    canvas.create_line(x0,y0,x1,y1, fill=color, width=thickness)

我将数字添加到板上的功能如下:

def uploadBoard():
    for i in range(9):
        for j in range(9):
            number = puzzleBoard[i][j]
            if number != 0:
                x = 10 + j * 5 + 5/2
                y = 10 + i * 5 + 5/2
                canvas.create_text(x,y, text=number)

puzzleBoard是包含数字的数组的数组。

我想做的是创建一个函数,当puzzleBoard[i][j]中的对应值更改为0时,该函数将删除特定(i,j)位置的数字。

1 个答案:

答案 0 :(得分:2)

在画布上创建项目时,画布将返回一个标识符。您以后可以使用此标识符来修改或删除项目。您只需要保存此标识符。

示例:

首先,在创建项目时保存参考。首先创建一个空字典,然后使用元组(i,j)作为键:

item = {}
for i in range(9):
    for j in range(9):
       ...
           item[(i,j)] = canvas.create_text(x,y, text=number)

接下来,使用您保存的商品ID删除该商品:

canvas.delete(item[(i,j)])