Удалить текст по позиции tkinter - PullRequest
1 голос
/ 07 мая 2019

Я новичок в 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 - это массив массивов, содержащих числа.

Я хочу создатьфункция, которая удаляет число в определенном (i, j) месте, когда соответствующее значение в puzzleBoard[i][j] было изменено на 0.

1 Ответ

2 голосов
/ 07 мая 2019

Когда вы создаете элемент на холсте, холст возвращает идентификатор. Вы можете использовать этот идентификатор позже, чтобы изменить или удалить элемент. Вам просто нужно сохранить этот идентификатор.

Пример:

Во-первых, сохраните ссылку при создании элементов. Начните с создания пустого словаря, а затем используйте кортеж (i,j) в качестве ключа:

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

Далее, используйте идентификатор элемента, который вы сохранили, чтобы удалить элемент:

canvas.delete(item[(i,j)])
Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...