Анимация на терминале с использованием Python - PullRequest
2 голосов
/ 04 октября 2019

Код для терминальной анимации, который я использую. Я пытаюсь сделать анимацию на терминале, и мне удалось создать анимацию с использованием кода в прикрепленном снимке. Проблема заключается в том, что этот код печатает все содержимое первого файла, очищает весь терминал и печатает содержимое второго файла. Создание покадровой анимации стиля. Я хочу сначала напечатать содержимое первого файла и без очистки перезаписать содержимое второго файла поверх напечатанного содержимого первого файла.

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") стиль возврата Каррайджа с перезаписью на одной строке, но для целых абзацев.

Есть ли способ вернуться к началу первых файлов print иперезаписать его вторым файлом?

1 Ответ

1 голос
/ 04 октября 2019

Вы стираете терминал, вызывая cls - это, очевидно, очистит терминал. Вам нужно использовать команды последовательности ANSI , или библиотеку, которая будет использовать их тогда или их эквивалент, для того, чтобы поместить курсор на экран дома без его очистки.

Так какВы работаете в Windows, модуль colorama должен позволить вам сделать это - по крайней мере, он включает необходимые последовательности ANSI.

Для более продвинутой анимации, такой как цветовые эффекты, используйте юникодспециальные символы, такие как окруженные буквы, рисование с блочными символами, можно использовать terminedia (отказ от ответственности: я автор) - однако он еще не готов к работе в Windows - и он будет использовать колораму для включения своих функцийв любом случае под Windows.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...