如果我不使用内置打印功能,有没有办法在 python 中打印彩色文本?
Is there a way to print coloured text in python if I'm not using the built-in print function?
我正在制作一个基于文本的游戏,理想情况下我希望在特定部分使用不同颜色的文本
我已经想出如何使用基本的内置打印功能更改文本的颜色,如下所示:
import colorama
from colorama import Fore, Back, Style
colorama.init()
print('3[31m' + 'red text here')
print('3[39m')
input("\n[Press enter to continue]")
在我的游戏中,我使用以下代码使大部分文本逐字母显示:
import time
import sys
import keyboard
def print_ci(s):
for c in s:
if keyboard.is_pressed("ctrl"):
sys.stdout.write(c)
sys.stdout.flush()
else:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.035)
print_ci ("sample text that appears letter by letter")
我想让逐个字母出现的文本在程序的特定位置呈现某种颜色。
我试过这个:
import time
import sys
import keyboard
import colorama
from colorama import Fore, Back, Style
colorama.init()
def print_ci(s):
for c in s:
if keyboard.is_pressed("ctrl"):
sys.stdout.write(c)
sys.stdout.flush()
else:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.035)
print_ci ("3[31m" + "sample text that appears letter by letter")
print_ci ('3[39m')
但我只得到这个输出:
[31msample text that appears letter by letter[39m
我也试过这种变色方法:
import time
import sys
import keyboard
from colorama import init
from termcolor import colored
init()
def print_ci(s):
for c in s:
if keyboard.is_pressed("ctrl"):
sys.stdout.write(c)
sys.stdout.flush()
else:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.035)
print_ci(colored('Hello, World!', 'green',))
但我仍然得到相同的输出。
有什么办法可以解决这个问题?
感谢 Reddit 上的 u/socal_nerdtastic,我找到了一个方法
首先,我将 sys.stdout 代码更改为
import time
import keyboard
def print_ci(s):
for c in s:
print(c, end='', flush=True)
if not keyboard.is_pressed("ctrl"):
time.sleep(0.035)
print_ci ("sample text that appears letter by letter")
然后我把它编辑成这个
import time
import keyboard
import colorama
from colorama import Fore, Back, Style
colorama.init()
def print_ci(s, color=''):
print(color) # set the text color
for c in s:
print(c, end='', flush=True)
if not keyboard.is_pressed("ctrl"):
time.sleep(0.035)
print('3[39m') # reset the terminal color
print_ci("sample text that appears in red", color='3[31m')
print_ci("normal text")
它实际上并没有回到我的正常文本,但如果你制作不同的打印功能,你可以使用它们制作多种不同颜色的文本
这里是 link 到 reddit 上的帖子,如果你需要的话:
https://www.reddit.com/r/learnpython/comments/lc7e8o/is_there_a_way_to_print_coloured_text_in_python/
我正在制作一个基于文本的游戏,理想情况下我希望在特定部分使用不同颜色的文本
我已经想出如何使用基本的内置打印功能更改文本的颜色,如下所示:
import colorama
from colorama import Fore, Back, Style
colorama.init()
print('3[31m' + 'red text here')
print('3[39m')
input("\n[Press enter to continue]")
在我的游戏中,我使用以下代码使大部分文本逐字母显示:
import time
import sys
import keyboard
def print_ci(s):
for c in s:
if keyboard.is_pressed("ctrl"):
sys.stdout.write(c)
sys.stdout.flush()
else:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.035)
print_ci ("sample text that appears letter by letter")
我想让逐个字母出现的文本在程序的特定位置呈现某种颜色。
我试过这个:
import time
import sys
import keyboard
import colorama
from colorama import Fore, Back, Style
colorama.init()
def print_ci(s):
for c in s:
if keyboard.is_pressed("ctrl"):
sys.stdout.write(c)
sys.stdout.flush()
else:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.035)
print_ci ("3[31m" + "sample text that appears letter by letter")
print_ci ('3[39m')
但我只得到这个输出:
[31msample text that appears letter by letter[39m
我也试过这种变色方法:
import time
import sys
import keyboard
from colorama import init
from termcolor import colored
init()
def print_ci(s):
for c in s:
if keyboard.is_pressed("ctrl"):
sys.stdout.write(c)
sys.stdout.flush()
else:
sys.stdout.write(c)
sys.stdout.flush()
time.sleep(0.035)
print_ci(colored('Hello, World!', 'green',))
但我仍然得到相同的输出。 有什么办法可以解决这个问题?
感谢 Reddit 上的 u/socal_nerdtastic,我找到了一个方法
首先,我将 sys.stdout 代码更改为
import time
import keyboard
def print_ci(s):
for c in s:
print(c, end='', flush=True)
if not keyboard.is_pressed("ctrl"):
time.sleep(0.035)
print_ci ("sample text that appears letter by letter")
然后我把它编辑成这个
import time
import keyboard
import colorama
from colorama import Fore, Back, Style
colorama.init()
def print_ci(s, color=''):
print(color) # set the text color
for c in s:
print(c, end='', flush=True)
if not keyboard.is_pressed("ctrl"):
time.sleep(0.035)
print('3[39m') # reset the terminal color
print_ci("sample text that appears in red", color='3[31m')
print_ci("normal text")
它实际上并没有回到我的正常文本,但如果你制作不同的打印功能,你可以使用它们制作多种不同颜色的文本
这里是 link 到 reddit 上的帖子,如果你需要的话: https://www.reddit.com/r/learnpython/comments/lc7e8o/is_there_a_way_to_print_coloured_text_in_python/