晚上看了些python实现动态字幕效果的文章,总会提到print函数的flush=True参数,还有os.system('cls')清屏,总是迷糊,并不能实现滚动屏幕效果。经过多方思索和查找,总结如下。
1.windows平台下pycharm工具,其实加不加 flush=True 效果都是一样的,因为网上说,有些系统是把字符存放在缓存里不会实时显示,总是再最后才一次性把所有的缓存信息显示,这样的延迟导致看不到动态效果。经过测试,windowns平台的pycharm工具不存在此问题,加不加效果都一样。
2.回车换行符的使用:
# 回车和换行的历史:
# 机械打字机有回车和换行两个键作用分别是:
# 换行 '\n' 就是把滚筒卷一格,不改变水平位置。 (即移到下一行,但不是行首,而是和上一行水平位置一样)
# 回车 '\r' 就是把水平位置复位,不卷动滚筒。 (即将光标移到行首,但是不会移到下一行,如果继续输入的话会覆盖掉前面的内容)
# Enter = 回车+换行(\r\n)
所以可以利用回车符,不断清除前面的字符,然后循环显示新的字符,来实现动态滚动效果。
2个实例如下:
实例1 动态广告语
import time
content = '钻石永久远,一颗永流传!'
while True:
print('\r', content, end='', flush=True) #去掉flush参数效果也一样
content = content[1:] + content[0]
time.sleep(0.5)
实例2 等待效果
import time
while True:
print('钻石永久远,一颗永流传', end=' ')
for i in range(10):
print('·', end='', flush=True) #去掉flush参数效果也一样
time.sleep(0.3)
print('\r',end='')