这是我关于stackoverflow的第一篇文章,所以如果它不是很清楚,我很抱歉。所以,我需要帮助我的CompSci课程。
以下是说明:
在窗口中央初始化1000点。
我已粘贴到目前为止所得到的内容:
此代码的问题是:它不会显示“移动”的点。我的导师希望它像动画一样。因为有1000点并且它们移动了一千次,所以不同“帧”之间的延迟必须非常短。
如果有人能帮我这样做,我会非常感激。
from Tkinter import Tk, Canvas
from random import randint
d=0
t=0
v=1000
x = []
y = []
for i in range(1000):
x.append(300)
y.append(300)
root=Tk()
canvas=Canvas(root, width=600, height=600, bg="white")#creates the canvas
for l in range(v):
for k in range(t):
for i in range(len(x)):
x[i] += randint(-2,2)
y[i] += randint(-2,2)
for i in range(1000):
canvas.create_rectangle(x[i],y[i],x[i],y[i])
if l < 999:
for i in range(1000):
canvas.create_rectangle(x[i],y[i],x[i],y[i], outline='white')
t+=1
l+=1
canvas.pack()
root.mainloop()
答案 0 :(得分:1)
问题似乎是canvas
不知道如何为动画的每一步做什么。如果你将用于更新画布的代码放在一个函数中(称为redraw()
),则在程序的主程序中调用该函数来绘制第一个图像,并包含类似{{1}的调用作为canvas.after(tim,redraw)
函数的最后一行,它将确保画布每redraw()
毫秒更新一次。
(编辑)
我还注意到tim
从列表randint(-2,2)
生成随机选择,而不是列表[-2,-1,0,1,2]
中的随机选择,这是您希望的列表。此外,如果您正在尝试模拟四边模具,其中四边是:+ 2x,-2x,+ 2y,-2y;然后分别计算x和y方向上的随机运动不会这样做,因为它会在每个时间步的每个点产生x和y方向的运动。