使用Tkinter快速制作圆圈记录

时间:2014-02-04 15:25:17

标签: python tkinter tkinter-canvas

我想在Tkinter Canvas上绘制多达86,000个(小圆圈)。平均而言,它将更像是8,600个圈子。有时只有400个。一次绘制的所有圆都是相同的(大小,颜色)。圆的半径与绘制的圆的数量有关(当绘制多个圆时,只有1-2px),但半径差异对整体影响不大。

canvas.create_oval(px+r,py+r,px-r,py-r,fill='green')在计算时间上非常昂贵。理想情况下,我会根据需要预先创建圆圈并在画布上粘贴它的副本。

目前拨打canvas.create_oval(...) 86,000次需要将近20秒。 (决定在不到100毫秒内自己运行的圆圈的逻辑。)

如何复制单个圆圈而不是单独创建它们?

1 个答案:

答案 0 :(得分:1)

我认为你无法做任何事情来加速圈子的创造。画布不是为处理80,000个对象而设计的,它不支持复制和粘贴项目的能力(除了简单地创建具有相同坐标的新对象)。它可以处理好几千个,甚至一万个在我的机器上也非常高效,但是86,000个项目很多。

您可以尝试创建给定大小的单个图像(或具有预先计算的图像)。您可以使用一个PhotoImage实例来创建画布上的所有图像。在我的机器上,我可以在几秒钟内在画布上创建100,000个图像对象。 删除然而,许多对象仍然很慢。