形状指在PPT页面上的各种元素,所以形状应该是由Slide对象管理的,要获取一个页面的所有形状,我们可以访问Slide对象的shapes属性,它会返回一个可迭代的SlideShapes对象,即该页面的所有形状,代码如下:
from pptx import Presentation
ppt = Presentation()
layout = ppt.slide_layouts[0]
slide = ppt.slides.add_slide(layout)
shapes = slide.shapes
print(type(shapes))
# 输出:<class 'pptx.shapes.shapetree.SlideShapes'>
如果只是想获取某个形状,也没什么问题,因为SlideShapes对象是一个可迭代对象,完全可以通过下标去获取某个形状,但要注意,下标必须存在,不要让下标越界了,代码如下:
from pptx import Presentation
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[0])
shapes = slide.shapes
print(len(shapes)) # 输出:2
shape1 = shapes[0]
shape2 = shapes[1]
print(type(shape1))
# 输出:<class 'pptx.shapes.placeholder.SlidePlaceholder'>
print(type(shape2))
# 输出:<class 'pptx.shapes.placeholder.SlidePlaceholder'>
ppt.save("./ppt_ files/test.pptx")
上面的代码使用第0个布局创建了一个Slide对象,该布局有两个SlidePlaceholder形状,其实就是两个文本框,你可以打开该文档查看这部分内容。