Python 为两个速度不同的对象设置动画

Python 为两个速度不同的对象设置动画,python,tkinter,Python,Tkinter,此脚本以相同的速度显示两个正方形的移动。如何设置不同的速度?谢谢大家! import tkinter as tk import time root = tk.Tk() canvas = tk.Canvas(root, width=400, height=400) canvas.pack() rc1 = canvas.create_rectangle(20, 260, 120, 360, outline='white', fill='blue') rc2 = canvas.create_rec

此脚本以相同的速度显示两个正方形的移动。如何设置不同的速度?谢谢大家!

import tkinter as tk
import time

root = tk.Tk()
canvas = tk.Canvas(root, width=400, height=400)
canvas.pack()

rc1 = canvas.create_rectangle(20, 260, 120, 360, outline='white', fill='blue')
rc2 = canvas.create_rectangle(20, 20, 120, 120, outline='white', fill='red')

for x in range(100):
    y = 0
    x = 5
    time.sleep(0.2)
    canvas.move(rc1, x, y)
    canvas.move(rc2, x, y)
    canvas.update()

root.mainloop()

记住在物理课上,
v=dx/dt

速度=位置变化/时间变化

在这里应用。时间的变化在这里由
time.sleep(0.2)
-1/5秒指定。你可能不想改变它,所以你可以改变的另一件事是改变每个时间片的位置

这里是
canvas.move()
的位置-这是位置的变化。您在脚本中调用它两次,一次用于
rc1
,一次用于
rc2
,两次都使用相同的
x
y
。由于位置变化相同,时间变化相同,
rc1
rc2
将以相同的速率移动

解决方案是什么?只是使用不同的变量。假设我们希望
rc2
以两倍于
rc1
的速度向同一方向移动:

canvas.move(rc1, x, y)
canvas.move(rc2, 2*x, 2*y)
或者说我们希望
rc1
沿
x
轴移动,而
rc2
沿
y
轴移动相同的距离:

canvas.move(rc1, x, y)
canvas.move(rc2, y, x)
或者我们希望他们以完全不同的轨迹和速度移动:

x1, y1 = 5, 0
x2, y2 = -13, 7
canvas.move(rc1, x1, y1)
canvas.move(rc2, y2, x2)

最后一种解决方案是最灵活的,这可能是您应该依赖的。

不要对两个移动命令使用相同的速度。你被困在哪里了?