我可以用python pptx获取占位符的默认字体大小吗?

我可以用python pptx获取占位符的默认字体大小吗?,python,python-pptx,Python,Python Pptx,我正在使用创建Powerpoint演示文稿 我知道我能读一段或一段话。我的问题是我想设置相对于默认大小的字体大小。换句话说:我需要知道占位符的默认字体大小。不幸的是,font.size如果没有明确声明字体大小 以下是我希望能够做到的: 来自pptx导入演示文稿的 #设置演示文稿 prs=演示文稿() 标题\幻灯片\布局=prs.幻灯片\布局[0] 幻灯片=prs.幻灯片。添加幻灯片(标题幻灯片布局) #题名 标题=幻灯片。占位符[0] title.text=“你好,世界!” #在这里,我想将字体

我正在使用创建Powerpoint演示文稿

我知道我能读一段或一段话。我的问题是我想设置相对于默认大小的字体大小。换句话说:我需要知道占位符的默认字体大小。不幸的是,
font.size
如果没有明确声明字体大小

以下是我希望能够做到的:

来自pptx导入演示文稿的

#设置演示文稿
prs=演示文稿()
标题\幻灯片\布局=prs.幻灯片\布局[0]
幻灯片=prs.幻灯片。添加幻灯片(标题幻灯片布局)
#题名
标题=幻灯片。占位符[0]
title.text=“你好,世界!”
#在这里,我想将字体大小调整为默认值的70%
p=标题、文本和框架、段落[0]

default_size=p.font.size#答案有点复杂,我没有给你一个食谱,但也许这会为你指明正确的方向

通常,形状的“字体大小”属性参与样式层次结构,类似于级联样式表(CSS)的工作方式。可以在不同级别设置值,最接近的显式设置获胜。这就是为什么形状级别设置是可靠的,因为它是“最接近”的可能设置

对于占位符,如示例中的标题占位符,级联如下:

  • 占位符形状本身(
    slide.placeholders[0]
    或更简单的
    slide.title
  • 从中派生的幻灯片布局占位符
  • 布局占位符的源幻灯片母版占位符
  • 如果幻灯片母版标题占位符中未指定,则可能是某些全局默认值
  • 因此,要导出有效的字体大小值,您需要遍历这个“继承链”,直到找到一个显式定义的值,该值将是有效值。类似于以下伪代码:

    def effective_title_placeholder_font_size():
    如果title\u placeholder.font-size不是无:
    返回标题\u占位符。字体大小
    如果slide-layout-title-placeholder.font-size不是无:
    返回slide-layout-title-placeholder.font-size
    等
    
    由于字体大小可以在整个形状上设置,也可以在单个段落或运行中覆盖,因此该过程更加复杂。这是选择整体形状和设置字体大小与选择文本范围和设置字体大小之间的区别

    所以你看到了其中的一些复杂性。这肯定是可行的,但您需要非常想要它,这取决于您的Python和一般软件开发技能水平


    最好的情况是,python pptx中的这些不同操作只有部分API支持(如获取此幻灯片占位符的幻灯片布局对应项等),因此您可能需要深入研究XML。

    您提到了“占位符”,但代码中似乎没有出现占位符。你说的是“常规”形状或占位符(如标题或正文/项目符号?)我的错。现在更新了一个更完整的代码示例。希望这是有道理的。