Python 一个动画在另一个动画开始时停止
所以基本上,每当用户点击时,它会使+1向上浮动,但是每当一个向上浮动,我再次点击时,已经向上浮动的+1就会停在它的位置上,就停在那里。如果我再次点击,它也会这样做,直到有数百个。我怎样才能使它永远不会停止动画,即使它对于Roop?< P>都是一个。你不能在TKTTER回调的中间使用<代码>睡眠>代码>,而不使整个程序停止运行。毕竟,这正是睡眠(0.05)的意思:使整个程序停止运行0.05秒 而且它不仅仅是Python 一个动画在另一个动画开始时停止,python,tkinter,Python,Tkinter,所以基本上,每当用户点击时,它会使+1向上浮动,但是每当一个向上浮动,我再次点击时,已经向上浮动的+1就会停在它的位置上,就停在那里。如果我再次点击,它也会这样做,直到有数百个。我怎样才能使它永远不会停止动画,即使它对于Roop?< P>都是一个。你不能在TKTTER回调的中间使用睡眠>代码>,而不使整个程序停止运行。毕竟,这正是睡眠(0.05)的意思:使整个程序停止运行0.05秒 而且它不仅仅是sleep——不管这个函数做什么,当它运行时,这就是正在运行的代码;没有其他代码可以运行,因此您的U
sleep
——不管这个函数做什么,当它运行时,这就是正在运行的代码;没有其他代码可以运行,因此您的UI被冻结
有两种基本解决方案:
- 更改函数,使其执行动画的一个步骤,安排下一个步骤在0.05秒内作为回调运行,然后返回
- 使用背景线程
for plusOneFrames in range(0, 25):
xxUL = xxUL + 0
yyUL = yyUL - 5
myText = screen.create_text( xxUL, yyUL, text = "+1", font = "Arial 25", fill = "black" )
screen.update()
sleep(0.05)
screen.delete( myText )
screen.delete( myText )
(我不知道这里的确切细节是否适用于您的实际代码事实上,如果您的代码没有使用Python 3.0+,或者您没有在另一个函数中本地执行此操作,我知道它不起作用。但是由于您没有显示您的实际代码,我不得不做一些猜测,希望您能够理解如何调整。)
有关更多详细信息,请参阅;有关事件循环或事件驱动编程的良好教程,请访问谷歌。请发布一篇文章,而不仅仅是一段随机代码。
def nextframe(i):
nonlocal xxUL, yyUL
xxUL = xxUL + 0
yyUL = yyUL - 5
myText = screen.create_text( xxUL, yyUL, text = "+1", font = "Arial 25", fill = "black" )
screen.update()
screen.delete( myText )
i += 1
if i != 25:
screen.after(0.05, lambda: nextframe(i))
else:
screen.delete( myText )
nextframe(0)