我想在删除小部件(如画布上绘制的矩形)之前检查它是否存在。
我的问题是我有两个删除矩形的方法。一个是使用bind
绑定到button-1(当矩形被点击时删除它),另一个方法是在矩形在一定时间内没有被点击时删除它(使用Widget.after
检查)。我想在第二个方法中检查矩形是否存在,因为我想计算用户没有点击的矩形,我能想到的唯一方法是检查它是否已经被删除。有办法做到这一点吗?当然,我可以在button-1事件处理程序中设置一个变量,然后从另一个方法中检查它。但是只是想知道Tkinter
是否提供了诸如“item exist”的方法。
编辑:好吧,我刚刚发现了一个窍门。如果我在已删除的小部件上使用itemconfig,我会得到空集。我使用该值来查看小部件是否已被删除。我不确定这是不是一种优雅的方式。
2条答案
按热度按时间j7dteeu81#
在我看来,您可以使用
Canvas.find_all
来获取画布上所有项的元组。然后你可以看到你的特定项是否是in
那个元组。例如:hjzp0vay2#
您也可以使用
forget
取消对小部件的Map,而不是销毁它,这样小部件就消失了,但变量名仍然有效。widget.winfo_ismapped()
会告诉你它是否被Map。在一个未Map的小部件上运行
widget.forget()
没有问题,因此您甚至不需要为将来的语句检查它的状态;只需运行forget
或运行pack
或根据需要覆盖变量。