有了文本框之后我们就可以尝试添加或者修改一些文字了,读者对这个部分应该是比较熟悉的,因为文本框的文本是通过Paragraph对象和Run对象控制的,没错,与操作python-docx里的段落和Run是一样的方法。每个TextFrame对象都默认有一个段落,我们访问一下TextFame对象的paragraphs属性可以获取到所有段落(返回值是一个元组),我们取第0个元素就拿到默认段落了,拿到Paragraph对象之后直接修改它的text属性就相当于改变了文本框的文本了,但是要注意text属性只能被赋值为字符串类型,赋值为其他数据类型是会报错的,代码如下:
from pptx import Presentation
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[0])
for shape in slide.shapes:
if not shape.has_text_frame:
continue
text_frame = shape.text_frame
paragraph = text_frame.paragraphs[0]
paragraph.text = "这是一个文本框"
ppt.save("./ppt_ files/test.pptx")
当然,如果一个段落还不够用的话,可以调用TextFrame的add_paragraph()方法添加段落,不过与python-docx不同的是,TextFrame的add_paragraph()方法不能传参数,也就是不能在创建段落的时候顺便把段落文本也写上去,只能手动调用段落的text属性填写文本,代码如下:
from pptx import Presentation
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[0])
shape = slide.shapes[0]
if shape.has_text_frame:
text_frame = shape.text_frame
p1 = text_frame.paragraphs[0]
p1.text = "这是默认段落"
p2 = text_frame.add_paragraph()
p2.text = "这是新增的段落"
text_frame.add_paragraph().text = "再新增了一个段落"
print(len(text_frame.paragraphs)) # 输出:3
ppt.save("./ppt_ files/test.pptx")