как изменить цвет текста непрерывно

#python #console

#python #консоль

Вопрос:

У меня есть программа, которая изменяет цвет изображения ASCII в цикле while. но когда я запускаю, он создает другой текст. Я хотел просто создать цвет, не создавая новый текст

вот мой код:

 
from rich import print
import random
import time
import sys

animation_time = 10

def generate_random_color():
    random_color = ["red", "blue", "magenta", "yellow", "purple"]
    return random.choice(random_color)

while True:
    color = generate_random_color()
    text = f"[{color}] 
n██████╗ ██╗ ██████╗ ███████╗ 
n██╔══██╗██║██╔═══██╗██╔════╝ 
n██████╔╝██║██║   ██║███████╗ 
n██╔══██╗██║██║   ██║╚════██║ 
n██████╔╝██║╚██████╔╝███████║ 
n╚═════╝ ╚═╝ ╚═════╝ ╚══════╝ 
[/]"
    
    print(text, end="r")
    time.sleep(1)

 

Комментарии:

1. на некоторых терминалах / консолях есть специальные текстовые коды для очистки экрана. И затем вы можете print использовать этот код, а затем распечатать текст в том же месте, но с другим цветом. Например, в терминале Bash вы можете очистить экран с помощью print("33c")

2. Можете ли вы соединить свою строку вместе, используя, например, форматирование строки или простое добавление? Что-то вроде output_string = f"[{color}] input_string ?

3. На что вы захотите взглянуть, так это на проклятия python, которые вам нужны, чтобы переместить курсор назад, чтобы перерисовать экран.

4. вы должны проверить в rich документации, нет ли в ней специальных кодов для перемещения курсора или очистки терминала.

5. в терминале Linux вы можете использовать print("33[%d;%dH" % (y, x)) для перемещения курсора в положение x,y . И тогда вы можете снова написать свой текст в том же месте

Ответ №1:

Я уже понял. Мне просто нужно каждый раз очищать экран вместо возврата каретки