【发布时间】:2021-05-17 10:17:11
【问题描述】:
我又一次被卡住了。
在画布中,我显示 9 张图像每 8 行添加一列。这仅用于测试目的。最后,图像应该是数百个。 我正在尝试用唯一的编号识别每个图像。为了做到这一点,我有一个事件,它给了我画布的坐标。这里是菜鸟部分。要获得这个唯一号码,我的代码是
if x_on_grid==0 and y_on_grid==448:
index_bin=0
elif x_on_grid==0 and y_on_grid==384:
index_bin=1
elif x_on_grid==0 and y_on_grid==320:
index_bin=2
elif x_on_grid==0 and y_on_grid==256:
index_bin=3
elif x_on_grid==0 and y_on_grid==192:
index_bin=4
elif x_on_grid==0 and y_on_grid==128:
index_bin=5
elif x_on_grid==0 and y_on_grid==64:
index_bin=6
elif x_on_grid==0 and y_on_grid==0:
index_bin=7
elif x_on_grid==64 and y_on_grid==448: #new column
index_bin=8
elif x_on_grid==64 and y_on_grid==384:
index_bin=9
当然它工作得很好,但它根本不科学。 我正在尝试通过循环减少所有这些行,但我无法获得所需的数量,只有最后一个。
有什么想法吗?
最好的
【问题讨论】:
-
你知道,但使用
canvas.create_stuff会返回一个ID。所以基本上说image1 = canvas.create_image(*args, **kwargs)将导致image1是一个整数,例如 1 所以没有必要做你正在做的事情 -
类似
index_bin = (448 - y_on_grid) // 64 + 8 * (x_on_grid // 64)- 您可能想用变量替换一些常量以容纳更多图像。 -
@Thierry Lathuille:超级!!!
-
我会使用标签。创建对象时,您可以为其添加标签作为标识符。使用类似
image-001的东西。当用户点击时,使用画布find_closest方法判断你点击的是哪个对象,并获取对象的标签,找出它的索引是什么。