【问题标题】:Animation on terminal using python使用python在终端上制作动画
【发布时间】:2019-10-04 19:14:51
【问题描述】:

我正在使用的终端动画代码 我正在尝试在终端上制作动画,并且已成功使用我附加的快照中的代码制作动画。 问题是这段代码打印了第一个文件的全部内容并清除了整个终端并打印了第二个文件的内容。 制作逐帧风格的动画。 我想要完成的是首先打印第一个文件的内容,而不清除在打印的第一个文件内容之上覆盖第二个文件的内容。

import os, time, sys

os.system('cls')
filenames = ["0.txt", "1.txt"]

with open("0.txt") as f0:
  zero = f0.read()

with open("1.txt") as f1:
  one = f1.read()

for i in range(10):
  for c in zero:
    sys.stdout.write(c)
    time.sleep(.0001)

  os.system('cls')

  for c in one:
    sys.stdout.write(c)
    time.sleep(.0001)

  os.system('cls')

想象一下:

print("一行内容",end="\r") 样式返回 carraige 在一行上覆盖打印,但针对整个段落。

有没有办法回到第一个文件打印的开头并用第二个文件覆盖它?

【问题讨论】:

  • 提问时,请将您的代码添加为内联代码,并使用{} 按钮对其进行格式化 - (并且从不使用图像作为代码)

标签: python animation cmd terminal


【解决方案1】:

您正在通过调用cls 擦除终端 - 这显然会清除终端。您需要使用ANSI sequence commands,或将使用它们的库或类似的库,以便将光标定位在屏幕主页上而不清除它。

由于您使用的是 Windows,colorama 模块应该可以让您做到这一点 - 至少它可以启用您需要的 ANSI 序列。

对于更高级的动画,如颜色效果,使用 unicode 特殊字符,如带圆圈的字母,用块字符绘制,可能想使用terminedia(免责声明:我是作者) - 但是它还没有准备好 Windows - 无论如何它都会使用 colorama 在 Windows 下启用它的功能。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2011-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-07-13
    • 2018-10-04
    • 1970-01-01
    相关资源
    最近更新 更多