我在从类中删除canvas对象时遇到了问题。
我创建了一个名为Rectangle
的{{1}}类型的对象。然后我需要删除这个对象。 Python删除f
,但不删除Frame上的画布对象。我不知道问题出在哪里。
f
答案 0 :(得分:1)
好的,你遇到的问题是你开始创建一个Rectangle
对象供你自己使用,这似乎是合理的,但你需要处理它的实现。
无论如何要完成你想做的事情(没有你的对象):
# draws a rectangle and returns a integer
rectangle_id = c.create_rectangle(*(0, 0, 30, 30), fill="yellow")
c.delete(rectangle_id) # removes it from the canvas
要使用Rectangle
对象完成所需的操作,我建议您在绘制时使用属性来存储ID并实现可以删除它的方法。看起来您可能希望在不再引用对象时使用__del__
方法将其删除。这可以做到,但你应该注意一些警告(我的答案范围之外......见:http://eli.thegreenplace.net/2009/06/12/safely-using-destructors-in-python/)。我个人会选择显式调用一个方法来从视图中删除对象表示,以避免所有的废话:)。
我忽略了许多设计决策,我建议你在这里考虑使用OO,或者在你对tkinter有更好的理解之前避免它。