当我用绘制形状:
canvas.create_rectangle(10, 10, 50, 50, color="green")
是否Tkinter的追踪的事实,它被创造?
在一个简单的游戏,我做,我的代码有一个Frame
创建一批矩形,然后画上一个大大的黑色矩形清屏,然后画另一组更新矩形的,等等。
我在内存中创建数千个矩形的对象?
我知道你可以指定上面的代码给一个变量,但如果我不这样做,只是直接绘制在画布上,它留在记忆,还是只是绘制像素,像在HTML5画布?
当我用绘制形状:
canvas.create_rectangle(10, 10, 50, 50, color="green")
是否Tkinter的追踪的事实,它被创造?
在一个简单的游戏,我做,我的代码有一个Frame
创建一批矩形,然后画上一个大大的黑色矩形清屏,然后画另一组更新矩形的,等等。
我在内存中创建数千个矩形的对象?
我知道你可以指定上面的代码给一个变量,但如果我不这样做,只是直接绘制在画布上,它留在记忆,还是只是绘制像素,像在HTML5画布?
每个画布项目是Tkinter的跟踪的对象。 如果你是清除仅通过绘制黑色矩形屏幕,然后你有效地创建了内存泄漏 - 最终你的程序将导致数以百万计的项目已经绘制崩溃。
要清除画布,使用删除方法。 给它特殊参数"all"
来删除画布上的所有项目(字符串"all"
“是表示在画布上的所有项目一个特殊的标签):
canvas.delete("all")
如果你想删除的画布上只有某些项目(如前景对象,同时保持背景显示屏上的对象),您可以指定标记的每个项目。 然后,而不是"all"
,你可以提供一个标记的名称。
如果您正在创建一个游戏,你可能并不需要删除并重新创建项目。 例如,如果您有一个在屏幕上移动对象时,您可以使用移动或COORDS方法来移动项目。
画在画布上的项目是持久的。 create_rectangle
返回您需要跟踪的项目ID。 如果不删除旧项目的计划最终将放缓。
从弗雷德里克Lundh的简介Tkinter的 :
请注意,添加到画布上的项目被保留,直到您删除它们。 如果你想改变图纸,您可以使用方法,如
coords
,itemconfig
,并move
到修改的项目,或者使用delete
将其删除。
是的,我相信你是创造了成千上万个对象。 如果你正在寻找一个简单的方法来删除一群人一次,用帆布标签这里描述 。 这可让您对大量对象执行相同的操作(如删除)。