动画两个速度不同的对象

时间:2019-02-07 21:59:51

标签: 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_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()

1 个答案:

答案 0 :(得分:1)

请记住您的物理课程int8_t

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

在此处应用。时间的变化在此处由int8_t-1/5秒指定。您可能不想更改它,因此可以更改以修改速度的另一件事是每个时间片的位置更改

这里是v = dx/dt的位置-这是位置的变化。您在脚本中调用了两次,一次用于time.sleep(0.2),一次用于canvas.move(),两次都使用相同的rc1rc2。由于位置的变化是相同的,并且时间的变化是相同的,所以xy将以相同的速率移动。

解决方案?只需使用不同的变量。假设我们希望rc1在相同方向上的移动速度是rc2的两倍:

rc2

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

rc2

或者我们希望它们以完全不同的轨迹和速度运动:

y

最后一个解决方案是最灵活的,您应该依靠它。