Colorama не выдает цвет текста, а пишет символы вокруг него
Собственно, по коду он должен сделать текст TESTED внутри жирным красным, но этого не происходит и я не понимаю почему.
Мой код:
import os
import random
import time
import wcwidth
import curses
import colorama
# Считываем файл
with open("text.txt", "r") as input_file:
heart_text = input_file.read()
# Разбиваем строку на список строк
heart_lines = heart_text.split('\n')
# Изменяем размер арта, если он не помещается на экран
console_size = os.get_terminal_size()
if len(heart_lines) > console_size.lines:
heart_lines = heart_lines[:console_size.lines]
# Определяем размер консоли и создаем окно curses
stdscr = curses.initscr()
max_y, max_x = stdscr.getmaxyx()
win = curses.newwin(max_y, max_x, 0, 0)
# Обрезаем 7-ую строку, если она длиннее 23 символов
if len(heart_lines[7]) > 19:
heart_lines[7] = heart_lines[7][:19]
# Заменяем символы сердечка на другие символы
symbols = "qwertyuiopasdfghjklzxcvbnmQWERTYUIOPASDFGHJKLZXCVBNM1234567890" # добавьте сюда свои символы
new_heart_lines = []
counter = 0 # счетчик циклов
while counter < 100:
new_heart_lines = []
for i, line in enumerate(heart_lines):
new_line = ""
for j, char in enumerate(line):
if i == 7 and j in range(10,11):
new_line += colorama.Fore.RED + colorama.Style.BRIGHT + "TESTED" + colorama.Style.RESET_ALL
elif char == "*":
weights = [0.05] * len(symbols)
weights[symbols.index('0')] = 0.3 # вероятность выбора 0 равна 0.3
weights[symbols.index('1')] = 0.2 # вероятность выбора 1 равна 0.2
new_char = random.choices(symbols, weights=weights)[0]
new_line += new_char
else:
new_line += char
new_heart_lines.append(new_line)
# Выводим измененный арт в окно curses
for y, line in enumerate(new_heart_lines):
for x, char in enumerate(line):
win.addstr(y, x, char)
# Обновляем окно curses
win.refresh()
counter += 1 # увеличиваем счетчик циклов
if counter >= 50:
break
time.sleep(0.1) # пауза в x секунды после каждого цикла вывода
# Завершаем работу с библиотекой curses
curses.endwin()
Я использую библиотеку curses-windows для динамического обновления терминала, т.к. сердце обновляется на рандомные символы из symbols каждое время (0.1 сек), текст TESTED статичный и не меняется.
Источник: Stack Overflow на русском