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) 位置的数字。
解决方案
当您在画布上创建项目时,画布会返回一个标识符。您可以稍后使用此标识符来修改或删除该项目。您只需要保存此标识符。
例子:
首先,在创建项目时保存参考。首先创建一个空字典,然后使用元组(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)])
推荐阅读
- java - Logback - same logger for two different levels
- ios - 使用包含 3 个项目的 url 方案快速打开另一个应用程序
- c# - 使用 LINQ 的 Where,转换为非 LINQ
- react-native - 如何编写一段适用于每个手机尺寸的样式代码(react-native)
- python - 使用 BeautifulSoup 只获取一个结果
- asp.net-core - nginx 的视频字节范围支持以支持 Safari Webkit iOS
- google-sheets - 计算没有空白单元格的行
- c - 如何使用转义命令将我的箭头向上和向一边?
- artificial-intelligence - 远程信息处理时间序列数据问题的特征提取
- mongodb - centos中如何在没有--no-sandbox的情况下打开mongodb