Python【print】常用颜色(复制用)

字体颜色

yellow = lambda x: print(f'\033[93m{
     
     x}\033[0m')
e = 'color'
# yellow
print('\033[033m', e, '\033[0m', sep='')
# blue
print('\033[034m', e, '\033[0m')
# purple
print('\033[035m  \033[0m')
# 蓝绿色
print('\033[036m %s \033[0m' % e)
# gray
print('\033[037m%r\033[0m' % e)
# red
print('\033[031m{}\033[0m'.format(e))

背景填充

# background
print('\033[0;7m')
print('\033[0m')
# background yellow
'\033[033;7m{}\033[0m'.format(args)

下划线

# underline
print('\033[0;4m')
print('\033[0m')

文本高亮

w = '比赛'
t = '比赛开始没多久就结束了比赛,现在没有比赛'

def replace_color(text, word):
    new_word = '\033[031m' + word + '\033[0m'  # red
    len_w = len(word)
    len_t = len(text)
    for i in range(len_t - len_w, -1, -1):
        if text[i: i + len_w] == word:
            text = text[:i] + new_word + text[i + len_w:]
    return text

print(t)
print(replace_color(t, w))

写模块

def _wrap_colour(colour, *args):
    for a in args:
        print(colour + '{}'.format(a) + '\033[0m')

def blue(*args): _wrap_colour('\033[94m', *args)
def bold(*args): _wrap_colour('\033[1m', *args)
def cyan(*args): _wrap_colour('\033[96m', *args)
def darkcyan(*args): _wrap_colour('\033[36m', *args)
def green(*args): _wrap_colour('\033[92m', *args)
def pink(*args): _wrap_colour('\033[95m', *args)
def purple(*args): _wrap_colour('\033[035m', *args)
def red(*args): _wrap_colour('\033[91m', *args)
def underline(*args): _wrap_colour('\033[4m', *args)
def yellow(*args): _wrap_colour('\033[93m', *args)

if __name__ == '__main__':
    blue('blue')
    bold('bold')
    cyan('cyan')
    darkcyan('darkcyan')
    green('green')
    pink('pink')
    purple('purple')
    red('r', 'e', 'd')
    underline('underline')
    yellow('yellow')

写类

END = '\033[0m'


class Color:
    @staticmethod
    def _wrap_colour(colour, args, prints, sep):
        if prints:
            for a in args:
                print(colour + '{}'.format(a) + END)  # Linux系统会报错
        return colour + sep.join('{}'.format(a) for a in args) + END

    @classmethod
    def background(cls, *args
<think> 我们正在处理的是用户关于“使用Python复制PPT文本框的方法”的查询。根据提供的引用,我们可以从以下几个方面来回答: 1. 引用[1]提到复制模板中的元素(如文本框)需要读取模板PPT文件,获取特定幻灯片上的文本框对象,读取文本内容,然后应用到新创建的文本框中。 2. 引用[2]和[3]提供了插入文本框的方法,但没有直接提到复制。 3. 引用[4]展示了添加文本框和设置文本内容。 因此,复制文本框的步骤可以归纳为: a) 打开模板PPT文件,定位到源幻灯片和文本框。 b) 读取文本框的属性(如位置、大小、文本内容、字体等)和文本内容。 c) 在目标幻灯片上创建新的文本框,设置同样的属性和文本内容。 然而,需要注意的是,python-pptx库并没有直接提供复制一个文本框到另一个位置的方法。我们需要通过读取原文本框的属性,然后创建一个新文本框并设置相同的属性。 具体步骤: 1. 打开模板文件。 2. 选择特定的幻灯片(slide)和文本框(shape)。 3. 获取文本框的位置(left, top)、大小(width, height)、文本内容以及格式(如字体、大小、颜色等)。 4. 在目标幻灯片(可以是同一演示文稿的不同幻灯片或另一个演示文稿的幻灯片)上使用add_textbox方法创建一个新文本框,位置和大小与原来相同。 5. 将原文本框的文本内容复制到新文本框,并复制文本格式(如果需要)。 但是,复制格式可能比较复杂,因为文本框中可能有多个段落,每个段落可能有不同的格式。我们需要遍历原文本框的所有段落和运行(run)来复制格式。 下面是一个示例代码,展示如何复制一个文本框(包括文本内容和基本格式)到同一演示文稿的另一张幻灯片: ```python from pptx import Presentation from pptx.util import Inches # 打开模板PPT文件 prs = Presentation('template.pptx') # 假设我们要复制第一张幻灯片(索引0)上的第一个文本框(shape) source_slide = prs.slides[0] # 找到第一个文本框(注意:我们假设它是第一个形状,但实际上可能需要根据类型和位置判断) # 这里我们假设第一个文本框是第一个形状,且类型是文本框(实际上,文本框是形状的一种,类型为MSO_SHAPE_TYPE.TEXT_BOX,值为17) # 我们可以通过判断shape.has_text_frame来确定 source_shape = None for shape in source_slide.shapes: if shape.has_text_frame: source_shape = shape break if source_shape is None: print("没有找到文本框") exit() # 获取源文本框的位置、大小和文本内容 left = source_shape.left top = source_shape.top width = source_shape.width height = source_shape.height text_frame = source_shape.text_frame # 添加一张新的空白幻灯片 slide_layout = prs.slide_layouts[6] # 空白布局 target_slide = prs.slides.add_slide(slide_layout) # 在目标幻灯片上创建一个同样位置和大小的文本框 new_textbox = target_slide.shapes.add_textbox(left, top, width, height) new_text_frame = new_textbox.text_frame # 复制文本内容及格式 # 首先清除新文本框中的默认段落(通常有一个空段落) for paragraph in new_text_frame.paragraphs: p = paragraph._element p.getparent().remove(p) # 遍历原文本框中的每一个段落 for paragraph in text_frame.paragraphs: # 在新文本框中添加一个段落 new_para = new_text_frame.add_paragraph() # 复制段落文本 new_para.text = paragraph.text # 复制段落格式(如对齐方式) new_para.alignment = paragraph.alignment # 复制段落中的运行(run)格式:字体、大小、粗体、斜体等 for run in paragraph.runs: new_run = new_para.add_run() new_run.text = run.text # 复制字体属性 font = new_run.font source_font = run.font font.name = source_font.name font.size = source_font.size font.bold = source_font.bold font.italic = source_font.italic font.underline = source_font.underline font.color.rgb = source_font.color.rgb # 注意:如果原颜色是主题颜色,直接复制rgb可能不准确,但通常可行 # 保存新的PPT文件 prs.save('output.pptx') ``` 注意: 1. 上面的代码只是一个示例,实际应用中可能还需要复制其他属性(如行距、项目符号等)。 2. 复制颜色时,如果原颜色是主题颜色(theme color),直接复制rgb值可能不是最佳方式,但通常可以工作。 3. 复制文本框时,可能还需要复制文本框的填充、线条等格式,但上述代码只复制文本文本格式。如果要复制整个文本框的样式,需要处理fill和line属性,这相对复杂。 因此,如果用户需要完全复制一个文本框(包括背景、边框等),则需要额外复制这些属性。不过,根据引用[1]的描述,用户的需求主要是复制文本框中的文本,所以上述代码可能已经足够。 如果用户需要复制整个幻灯片(包括文本框和其他形状),则可以使用复制整个幻灯片的方法,但这不是用户要求的(只要求文本框)。 综上所述,我们通过读取源文本框的属性,然后在目标位置创建新文本框并复制文本内容和格式来实现复制。 §§相关问题§§ 1. 如何复制PPT中的图片或其他形状? 2. 如何批量复制多个文本框? 3. 在复制文本框时如何保持样式(如背景色、边框)一致? 4. python-pptx中还有哪些常用文本框操作方法? </think> 根据引用内容,我将详细介绍使用Python复制PPT文本框的方法: ### 核心实现步骤 1. **读取源文本框属性** 首先需要定位并获取原文本框的所有属性: ```python from pptx import Presentation # 打开模板文件 prs = Presentation("template.pptx") slide = prs.slides[0] # 选择源幻灯片 # 获取源文本框(假设是第一个形状) source_textbox = slide.shapes[0] text_frame = source_textbox.text_frame # 提取关键属性 text_content = text_frame.text # 文本内容 left = source_textbox.left # 左侧位置 top = source_textbox.top # 顶部位置 width = source_textbox.width # 宽度 height = source_textbox.height # 高度 ``` 2. **创建新文本框并复制内容** 在目标位置创建相同属性的文本框: ```python # 添加空白幻灯片(或选择现有幻灯片) new_slide = prs.slides.add_slide(prs.slide_layouts[6]) # 精确复制文本框属性 new_textbox = new_slide.shapes.add_textbox(left, top, width, height) new_text_frame = new_textbox.text_frame # 复制文本内容 new_text_frame.text = text_content # 保存新文件 prs.save("copied.pptx") ``` 3. **高级格式复制(可选)** 若要复制字体、颜色等格式: ```python # 复制段落格式 for paragraph in text_frame.paragraphs: new_para = new_text_frame.add_paragraph() new_para.text = paragraph.text # 复制字体属性 font = new_para.font font.name = paragraph.font.name font.size = paragraph.font.size font.bold = paragraph.font.bold ``` ### 关键注意事项 1. **位置单位转换** 位置参数使用`Inches`或`Pt`类确保单位正确: ```python from pptx.util import Inches left = Inches(1.5) # 1.5英寸处 ``` 2. **文本框类型识别** 通过遍历识别文本框: ```python for shape in slide.shapes: if shape.has_text_frame: print("找到文本框") ``` 3. **深层复制建议** 对于复杂格式(如多级段落),建议使用: ```python import copy cloned_textbox = copy.deepcopy(source_textbox) ``` 但需注意`python-pptx`对深拷贝的支持限制[^1][^3]。
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

小基基o_O

您的鼓励是我创作的巨大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值