2012-11-01 61 views
2

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

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

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

回答

3

在我看来,你可以使用Canvas.find_all来获取画布上所有项目的元组。然后你可以看到你的特定项目是否为in那个元组。例如:

if item in my_canvas.find_all(): 
    my_canvas.delete(item) 
else: 
    print("Item not on canvas") 
+0

工程就像一个魅力。谢谢! – Andrew