从类中删除画布对象的问题

时间:2012-12-31 17:35:38

标签: python class canvas

我在从类中删除canvas对象时遇到了问题。

我创建了一个名为Rectangle的{​​{1}}类型的对象。然后我需要删除这个对象。 Python删除f,但不删除Frame上的画布对象。我不知道问题出在哪里。

f

1 个答案:

答案 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有更好的理解之前避免它。