如何摆脱在我的while循环中发生的滞后

时间:2016-04-24 20:43:27

标签: python tkinter python-3.4 lag

用我的代码制作一个火箭应该是,当我点击空间时,发射自己,不幸的是,mov_r函数内部的while循环会导致很多延迟。然后将死亡的旋转沙滩球带出几分钟直到它停止并且火箭消失了。这意味着你实际上看不到火箭的移动,这不是我想要发生的事情。我希望能够看到火箭在移动。我已经尝试调整它睡觉的时间和火箭每次移动的数量,但没有一个工作。 这是代码:

from tkinter import *
import random, time
tk = Tk()
tk.wm_attributes('-topmost', 1)
canvas = Canvas(tk, width=1000, height=1000, bd=0)
canvas.pack()  
def move_r(event):
    if event.keysym == 'space': 
        global y2
        global y3
        a = 0
        b = 1000
        while a <b:
            y2-=1
            y3-=1
            time.sleep(.1)
            a+=1 

x2=460
y2=940
x3=570
y3=900
r1=None
num = 0
num1= 4
tk.bind('<KeyPress-space>', move_r)
while num < num1:
    background = canvas.create_rectangle(0, 0, 1000, 1000, fill = 'red') 
    base=canvas.create_rectangle(0, 1000, 1000, 900, fill='#86592d')
    def rocket():
        rocketbase=canvas.create_rectangle(x2+50, y2-50, x3-50, y3-90, fill ='blue')
        rrocketfin=canvas.create_rectangle(x2+60, y2-50, x3-40, y3-20, fill ='#e69100')
        lrocketfin=canvas.create_rectangle(x2+40, y2-50, x3-60, y3-20, fill ='#e69100')
        mrocketfin=canvas.create_rectangle(x2+54, y2-50, x3-53, y3-20, fill ='#e69100')
        lrockethead=canvas.create_rectangle(x2+45, y2-125, x3-60, y3-70, fill ='#e69100')
        rrockethead=canvas.create_rectangle(x2+60, y2-125, x3-45, y3-70, fill ='#e69100')
    rocket()  
    tk.update()
tk.mainloop()

如果有人能告诉我如何摆脱滞后请帮忙,谢谢。 另外请不要问为什么我使用x2和x3以及y2和y3这是一个很长的故事。

0 个答案:

没有答案