2

我想在删除它之前检查一个小部件(例如在画布上绘制的矩形)是否存在。

这是我的问题:我有两种删除矩形的方法。一个绑定到 button-1 使用bind(单击时删除矩形),另一种方法如果在一定时间内没有被单击,则删除一个矩形(使用检查Widget.after)。我想检查第二种方法中是否存在矩形,因为我想计算用户未单击的矩形,我能想到的唯一方法是检查它是否已被删除。有没有办法做到这一点?当然,我可以在 button-1 事件处理程序中设置一个变量并从其他方法中检查它。但只是想知道是否Tkinter提供诸如“项目存在”之类的方法。

编辑:嗯,我刚刚发现了一个技巧。如果我在已删除的小部件上使用 itemconfig,我会得到空集。我使用该值来查看小部件是否已被删除。我不确定这是否是一种优雅的方式。

4

1 回答 1

4

在我看来,您可以使用它Canvas.find_all来获取画布上所有项目的元组。然后您可以查看您的特定项目是否是in该元组。例如:

if item in my_canvas.find_all():
   my_canvas.delete(item)
else:
   print("Item not on canvas")
于 2012-11-01T19:07:35.743 回答