首页 > 解决方案 > 按位置删除文本 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) 位置的数字。

标签: pythontkinter

解决方案


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

例子:

首先,在创建项目时保存参考。首先创建一个空字典,然后使用元组(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)])

推荐阅读