Python如何实现两段文本交替闪烁打印(Python3.8下termcolor不兼容场景)
两段文本交替闪烁实现方案
以下两种方案均兼容Python 3.8,无需使用termcolor库:
方案1:终端原生输出(无第三方依赖)
直接使用终端原生支持的ANSI转义序列实现清屏和内容切换,轻量稳定。
import time import os # 适配Windows系统开启ANSI支持 if os.name == 'nt': os.system('') # 自定义闪烁间隔,单位秒 BLINK_INTERVAL = 0.5 while True: # 清屏并将光标移动到终端左上角 print('\033[2J\033[H', end='') print("Hello World") time.sleep(BLINK_INTERVAL) # 清屏切换第二段文本 print('\033[2J\033[H', end='') print("How are you?") time.sleep(BLINK_INTERVAL)
注意:如果IDE内置终端运行无效果,切换系统自带的命令行/终端工具运行即可。
方案2:ImageDraw图像场景(适合GUI/动态图输出)
如果你是用PIL的ImageDraw做图像输出,可以通过切换绘制文本实现闪烁,可直接生成动态GIF或者配合GUI框架实时刷新。
依赖安装
pip install pillow imageio
示例代码(生成循环闪烁的动态GIF)
from PIL import Image, ImageDraw, ImageFont import imageio # 参数配置 FONT_SIZE = 30 IMAGE_SIZE = (300, 100) BLINK_INTERVAL = 0.5 TEXTS = ["Hello World", "How are you?"] # 加载字体,优先用系统字体,失败则用默认字体 try: font = ImageFont.truetype("arial.ttf", FONT_SIZE) except: font = ImageFont.load_default() frames = [] for text in TEXTS: # 创建空白画布 img = Image.new("RGB", IMAGE_SIZE, "white") draw = ImageDraw.Draw(img) # 计算文本居中坐标 text_w, text_h = draw.textsize(text, font=font) pos = ((IMAGE_SIZE[0] - text_w) // 2, (IMAGE_SIZE[1] - text_h) // 2) # 绘制文本 draw.text(pos, text, fill="black", font=font) frames.append(img) # 导出循环播放的动态GIF imageio.mimsave("blink.gif", frames, duration=BLINK_INTERVAL, loop=0)
内容的提问来源于stack exchange,提问作者desi234
相关产品推荐
相关产品推荐

