-->

如何清除Tkinter的印刷品吗?(How to clear Tkinter Canvas?)

2019-08-19 21:00发布

当我用绘制形状:

canvas.create_rectangle(10, 10, 50, 50, color="green")

是否Tkinter的追踪的事实,它被创造?

在一个简单的游戏,我做,我的代码有一个Frame创建一批矩形,然后画上一个大大的黑色矩形清屏,然后画另一组更新矩形的,等等。

我在内存中创建数千个矩形的对象?

我知道你可以指定上面的代码给一个变量,但如果我不这样做,只是直接绘制在画布上,它留在记忆,还是只是绘制像素,像在HTML5画布?

Answer 1:

每个画布项目是Tkinter的跟踪的对象。 如果你是清除仅通过绘制黑色矩形屏幕,然后你有效地创建了内存泄漏 - 最终你的程序将导致数以百万计的项目已经绘制崩溃。

要清除画布,使用删除方法。 给它特殊参数"all"来删除画布上的所有项目(字符串"all" “是表示在画布上的所有项目一个特殊的标签):

canvas.delete("all")

如果你想删除的画布上只有某些项目(如前景对象,同时保持背景显示屏上的对象),您可以指定标记的每个项目。 然后,而不是"all" ,你可以提供一个标记的名称。

如果您正在创建一个游戏,你可能并不需要删除并重新创建项目。 例如,如果您有一个在屏幕上移动对象时,您可以使用移动或COORDS方法来移动项目。



Answer 2:

画在画布上的项目是持久的。 create_rectangle返回您需要跟踪的项目ID。 如果不删除旧项目的计划最终将放缓。

从弗雷德里克Lundh的简介Tkinter的 :

请注意,添加到画布上的项目被保留,直到您删除它们。 如果你想改变图纸,您可以使用方法,如coordsitemconfig ,并move到修改的项目,或者使用delete将其删除。



Answer 3:

是的,我相信你是创造了成千上万个对象。 如果你正在寻找一个简单的方法来删除一群人一次,用帆布标签这里描述 。 这可让您对大量对象执行相同的操作(如删除)。



文章来源: How to clear Tkinter Canvas?