1 回答

TA贡献1839条经验 获得超15个赞
find_closest返回1意味着它正在查找您在画布中创建的第一个元素,在本例中是create_text.
奇怪的是,当你create_text使用text=""它时,它似乎超越了你所有的其他元素。通过一个简单的修复,text=" "现在可以在点击时找到壁橱矩形。
对于其他元素,当您分配option=""它时实际上会禁用(据我所知)该选项,因此您不是使用其默认值,而是主动告诉tcl解释器不要使用它。这可以在其他元素中观察到,例如create_rectangle(..., outline="")默认值outline="black"将不再适用,您甚至不会得到大纲。我有一种感觉text=""产生了类似的效果,并且由于某种原因基本上覆盖了整个画布区域,因此它会导致find_closest始终返回该元素。也许如果你幸运的话@BryanOakley(一位 tcl 专家)可以加入后端推理。
事实上,如果您尝试过,find_above(item)您会注意到text始终低于之后绘制的其他元素。
简而言之:
# Change this:
self.tag = self.canvas.create_text(10, 150, text="", anchor="nw")
# To this:
self.tag = self.canvas.create_text(10, 150, text=" ", anchor="nw")
添加回答
举报