当应该单独显示时,代码一次显示所有帧
Code shows all the frames at once when supposed to show separately
有密码。我想创建一个文字动画。它打印一行文本,然后在延迟一段时间后将其擦除并打印另一行。
这是创建文本框的函数:
def frame(data):
clear = '\u001b[0m'
for letter in data:
rslt = colours['fg'][letter['color']]
rslt += letter.get('bg', '')
rslt += letter['letter']
rslt += clear
stdout.write(rslt)
这是动画函数:
from time import sleep
def animate(data):
clear = '\u001b[100D'
#for i in range(len(data)):
for i in range(5):
#stdout.write(clear) #1
ready = change(data, i)
frame(ready)
sleep(0.4)
print()
我应该得到什么? 正如我上面解释的,它应该打印一行文本,然后等待 0.4,然后在下一个迭代周期中擦除之前的文本, 然后重复这些内容。
但是我得到了什么?我什么也没得到(我没有准确测量,但可能是0.4的延迟总和)一段时间然后文本重复5次它没有被清除,因为第 1 行被注释了。如果不是,再次计算延迟总和后,我得到文本的最后一帧。
上玩我的代码
写入后调用stdout.flush()
:
def animate(data):
clear = '\u001b[100D'
#for i in range(len(data)):
for i in range(5):
#stdout.write(clear) #1
ready = change(data, i)
frame(ready)
stdout.flush()
sleep(0.4)
有密码。我想创建一个文字动画。它打印一行文本,然后在延迟一段时间后将其擦除并打印另一行。 这是创建文本框的函数:
def frame(data):
clear = '\u001b[0m'
for letter in data:
rslt = colours['fg'][letter['color']]
rslt += letter.get('bg', '')
rslt += letter['letter']
rslt += clear
stdout.write(rslt)
这是动画函数:
from time import sleep
def animate(data):
clear = '\u001b[100D'
#for i in range(len(data)):
for i in range(5):
#stdout.write(clear) #1
ready = change(data, i)
frame(ready)
sleep(0.4)
print()
我应该得到什么? 正如我上面解释的,它应该打印一行文本,然后等待 0.4,然后在下一个迭代周期中擦除之前的文本, 然后重复这些内容。
但是我得到了什么?我什么也没得到(我没有准确测量,但可能是0.4的延迟总和)一段时间然后文本重复5次它没有被清除,因为第 1 行被注释了。如果不是,再次计算延迟总和后,我得到文本的最后一帧。
上玩我的代码写入后调用stdout.flush()
:
def animate(data):
clear = '\u001b[100D'
#for i in range(len(data)):
for i in range(5):
#stdout.write(clear) #1
ready = change(data, i)
frame(ready)
stdout.flush()
sleep(0.4)