我打电话的时候发现了窗口.更新,当向窗口写入的内容较少时,它的运行速度会快得多,但之后,当我向窗口写入更多元素时,窗口.更新需要更长时间。在
请参阅下面的代码。你可以看到它在更新窗口之前一次向屏幕100添加新的圆。在
我的问题是:为什么它会随着时间而变慢?在一开始,刷新每秒发生多次。半分钟后,大约每秒一次。。。在
起初,这对我来说似乎很奇怪,因为我认为简单地更改要刷新的像素,然后再刷新,每次的处理量将保持不变。但后来我想。。。这件事是继续“跟踪”和“解释”我先前放在窗户上的形状吗??在
from tkinter import *
from random import *
xsize=1000
ysize=1000
shapesize=10
window = Tk()
canvas = Canvas(window, width=xsize, height=ysize)
canvas.pack()
while True:
for l in range(100):
col=choice(['pink','green','orange','yellow','blue','purple','red','black','brown','gray'])
x=randint(0,xsize)
y=randint(0,ysize)
canvas.create_oval(x,y,x+shapesize, y+shapesize, fill=col)
window.update()
简短回答:
这是由于你使用的算法的复杂性。在
详细回答:
无限期地满足
while
条件。在在
for
循环退出后,立即要求画布重新绘制之前的所有椭圆。在这意味着:
while
迭代1,画布重画99个椭圆while
迭代2:画布重画99+99个椭圆while
迭代3:canvas重画99+99+99个椭圆。在while
迭代4:canvas重画99+99+99+99个椭圆。在结论
你得到了你想要的。在
备选方案
如果要无限期地只绘制99个椭圆,请删除以前创建的每个99个椭圆。这意味着您可以在
canvas.update()
的正下方添加canvas.delete(ALL)
相关问题 更多 >
编程相关推荐