如何用Python python-pptx模块设置PPT循环播放至按下ESC
用python-pptx实现PPT循环播放设置
要实现PPT循环播放直到按下ESC键,对应PowerPoint中“设置幻灯片放映”的循环选项,通过分析可知需要在演示文稿的/ppt/presProps.xml中添加<p:showPr loop="1" showNarration="1"/>标签。以下是用python-pptx实现的正确方法:
核心思路
python-pptx的Presentation对象并非直接的XML元素,需要先获取presProps.xml对应的内部部件,再操作其XML结构添加或修改showPr元素。
完整代码示例
from pptx import Presentation from pptx.oxml import etree def set_presentation_loop(presentation): # 获取presProps.xml部件 pres_props_part = presentation.part.package.part_related_to( presentation.part, "http://schemas.openxmlformats.org/officeDocument/2006/relationships/presProps" ) if not pres_props_part: # 如果presProps部件不存在,创建一个新的 from pptx.opc.constants import CONTENT_TYPE as CT pres_props_part = presentation.part.package.create_part( "/ppt/presProps.xml", CT.PRESENTATION_PROPERTIES ) # 初始化根元素 root = etree.Element("{http://schemas.openxmlformats.org/presentationml/2006/main}presProps") pres_props_part._element = root else: root = pres_props_part._element # 检查是否已存在showPr元素 nsmap = {'p': 'http://schemas.openxmlformats.org/presentationml/2006/main'} show_pr_elements = root.xpath(".//p:showPr", namespaces=nsmap) if show_pr_elements: show_pr = show_pr_elements[0] # 修改loop属性为"1" show_pr.set("loop", "1") # 可选:设置showNarration属性(如果需要播放旁白) show_pr.set("showNarration", "1") else: # 创建新的showPr元素并添加到根节点 p_ns = "http://schemas.openxmlformats.org/presentationml/2006/main" show_pr = etree.Element(f"{{{p_ns}}}showPr", attrib={'loop': '1', 'showNarration': '1'}) root.append(show_pr) # 使用示例 presentation = Presentation("your_presentation.pptx") set_presentation_loop(presentation) presentation.save("loop_presentation.pptx")
代码说明
- 获取presProps部件:通过
package.part_related_to找到对应的XML部件,若不存在则创建新的。 - 操作XML元素:利用lxml的xpath检查是否已有
showPr元素,存在则修改属性,不存在则创建并添加到根节点。 - 属性设置:
loop="1"启用循环播放,showNarration="1"是可选的旁白播放设置,可根据需求调整。
内容的提问来源于stack exchange,提问作者Andrew Sparkes
相关产品推荐
相关产品推荐

