如何使移动物体变慢

时间:2018-06-30 19:07:53

标签: python tkinter tkinter-canvas

我已经编写了这段代码来创建气泡,这些气泡在tkinter中从屏幕的右侧移动到左侧:

from tkinter import *
window = Tk()
c = Canvas(window, width=800, height=500, bg="darkblue")
c.pack()
list1 = list()
speedlist = list()
from random import randint
def create_bubble():
     id1 = c.create_oval(randint(50, 70), randint(210, 240), randint(910, 930), randint(240, 260), outline="white")
     list1.append(id1)
     speedlist.append(randint(1, 10))
def move_bubbles():
    for i in range(len(list1)):
        c.move(list1[i], -speedlist[i], 0)
while True:
    if randint(1, 10) == 1:
        create_bubble()
    move_bubbles()
    window.update()

它们移动得非常好,但速度却快于被猫追赶的一些老鼠。您几乎看不到它们。当然,我可以在小数字之间设置速度,但这很愚蠢,我想知道问题的原因。有谁能够帮助我?谢谢!

2 个答案:

答案 0 :(得分:1)

您可以降低气泡替换的速度

speedlist.append(randint(1, 10))

通过:

ratio = 0.1
speedlist.append(randint(1, 10) * ratio)

气泡会慢10倍。

答案 1 :(得分:1)

当前处于循环状态的循环move_bubbles()每秒不确定的次数。

将每个动作与一个函数执行到另一个执行所花费的时间相关联并使用速度系数是正确的:

import time
t1=time.time()

speed=0.2 #tweak it

#...
def move_bubbles():
    delta_time=time.time()-t1
    t1=time.time()
    for i in range(len(list1)):
        c.move(list1[i], delta_time*speed*-speedlist[i], 0)