如何使用 pptx python 库更改 PPT 幻灯片上项目符号列表的缩进

How to change indent on bulleted list on PPT slide using pptx python library

我已经开始使用 'pptx' 库以编程方式生成一些基于 PPT 的报告。我们有一个公司模板,我将其用作基础。它包含一张带有单列格式项目符号列表的主幻灯片,看起来像这样(但每个级别都有不同的格式,例如项目符号类型和颜色。抱歉,无法在此处分享实际图片):

Bulleted list format

我想知道是否有一种方法可以像我们在 MS PowerPoint 中通过标尺(或右键单击 > 段落 > 缩进)那样更改各个级别的位置..?如果我更改项目符号列表的 "level" 参数,它会从第一级更改为第二级以及所有格式。

shape.text_frame.paragraphs[0].level = 2

但我只想将第一层向右移动几厘米。所以它看起来像:

Bulleted list shifted to right

我知道一种明显的实现方法是添加具有所需格式的新母版幻灯片并使用它。但是,如果需要多次更改缩进,则很难为每个特定情况添加新的母版幻灯片。因此,我正在搜索是否有一种方法可以使用 'pptx' 功能以编程方式进行。到目前为止,我无法在 'pptx' 中找到此类功能,但我可能已经错过了它,或者可能有一些解决方法。如果是这样,我很想知道。

简短的回答是 "no"。 python-pptx 的当前版本在其 API 中不支持项目符号格式。

为此,您需要直接操作基础 XML。您可以在 "python-pptx workaround function" 上搜索以获取一些示例。

我认为感兴趣的元素是 p:sp/p:txBody/a:lstStyle,包含 "lvl1pPr" 和 "lvl2pPr" 等元素。

Shape.text_frame._element

上提供了对 p:txBody 元素的引用