Python PPTX幻灯片布局导入

Python PPTX幻灯片布局导入,python,python-pptx,Python,Python Pptx,很抱歉,我一直在寻找解决方案,但找不到足够的文档来解决这个问题。我正在尝试导入学校所需的默认幻灯片布局,它具有特殊背景、标题栏和字幕栏。我假设在导入此内容时,python pptx会自动为这两个文本块创建占位符0和1,但当我尝试编辑占位符时,会出现属性错误: AttributeError: 'Presentation' object has no attribute 'placeholders' 我的代码如下: from pptx import Presentation prs = Prese

很抱歉,我一直在寻找解决方案,但找不到足够的文档来解决这个问题。我正在尝试导入学校所需的默认幻灯片布局,它具有特殊背景、标题栏和字幕栏。我假设在导入此内容时,python pptx会自动为这两个文本块创建占位符0和1,但当我尝试编辑占位符时,会出现属性错误:

AttributeError: 'Presentation' object has no attribute 'placeholders'
我的代码如下:

from pptx import Presentation
prs = Presentation('SeniorDesignTitleSlide.pptx')

Presentation_Title = prs.placeholders[0]
Presentation_Subtitle = prs.placeholders[1]
Presentation_Title.text = 'This Is a Test'
Presentation_Subtitle.text = 'Is This Working?'

prs.save('SlideLayoutImportTest.pptx')
编辑[0]:我确实意识到我只是在打开那个特定的演示文稿,但如何访问和编辑其中的单个幻灯片

编辑[1]:我发现2015年有几篇关于python pptx扩展此功能的帖子,但没有关于它实际发生的更多信息

python pptx如何为导入的幻灯片布局分配占位符?或者它真的这样做了?它需要是一个.potx文件吗

提前感谢。

占位符属于幻灯片对象,而不是演示文稿对象。所以首先要做的是抓住一张幻灯片

幻灯片是从幻灯片布局创建的,它本质上是克隆幻灯片布局以获得一些起始形状,在许多情况下包括占位符

因此,第一步是找出您想要的幻灯片布局。最简单的方法是打开“开始”演示文稿(有时称为“模板”演示文稿),并使用“视图>母版>幻灯片母版”检查其幻灯片母版和布局。。。菜单选项

找到你想要的,从第一个布局开始倒计时,从0开始,这将为你提供该幻灯片布局的索引

然后,您的代码如下所示:

from pptx import Presentation

prs = Presentation('SeniorDesignTitleSlide.pptx')

slide_layout = prs.slide_layouts[0]  # assuming you want the first one
slide = prs.slides.add_slide(slide_layout)

Presentation_Title = slide.placeholders[0]
Presentation_Subtitle = slide.placeholders[1]
Presentation_Title.text = 'This Is a Test'
Presentation_Subtitle.text = 'Is This Working?'

prs.save('SlideLayoutImportTest.pptx')
就索引访问而言,
占位符
集合的行为类似于
dict
,因此在您的情况下,用作索引的0和1不太可能完全匹配(尽管0可能会起作用;标题始终为0)

本页文档介绍了如何发现模板中可用的索引:

前面的页面有更多关于占位符概念的内容:

Scanny,谢谢。我应该更清楚一点,当从头开始创建演示文稿并使用11种布局时,我实际上对pptx有一些经验。但是,当我打开演示文稿并将幻灯片布局0(标题)添加到演示文稿中的幻灯片时,标题幻灯片是否会采用高级设计模板文件中占位符的背景和位置?我也会投票给你,但我还没有15的声誉:(@CBK A slide显示其版面上的内容,因此,是的,使用带有背景和占位符的标题幻灯片版面创建的标题幻灯片。但是,这些项目必须在版面上。如果它只是一张幻灯片(就像他们给你的.pptx有示例幻灯片,但没有使用这些幻灯片创建版面),你必须自己制作或更新布局以获得继承行为。斯坎尼,这很有魅力!它创建了模板的精确副本,占位符也像应该的那样被保留和排列。非常感谢你的帮助。我本来应该先尝试添加一张幻灯片。哦,好吧,你还活着,你挣钱。再次感谢你,再次为无法击败你而抱歉。如果可以,我会的。如果答案回答了你的问题,你仍然可以接受:)