1

我想在 Tkinter 画布上绘制多达 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 毫秒的时间内绘制哪个圆圈的逻辑。)

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

4

1 回答 1

1

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

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

于 2014-02-04T16:52:28.623 回答