Python run.font.italic和run.font.bold返回None而不是True

Python run.font.italic和run.font.bold返回None而不是True,python,powerpoint,python-pptx,Python,Powerpoint,Python Pptx,我需要得到所有的文本是斜体和粗体的段落。我手动将文本转换为斜体和粗体,但下面的代码不返回任何文本。它只是一个发起者,还是我们也能从中获得价值,我怎样才能得到所有斜体和粗体文本 def get_italic_ratio(slide): count = 0 for shape in slide.shapes: if not shape.has_text_frame: continue text_frame = shape.tex

我需要得到所有的文本是斜体和粗体的段落。我手动将文本转换为斜体和粗体,但下面的代码不返回任何文本。它只是一个发起者,还是我们也能从中获得价值,我怎样才能得到所有斜体和粗体文本

def get_italic_ratio(slide):
    count = 0
    for shape in slide.shapes:
        if not shape.has_text_frame:
            continue
        text_frame = shape.text_frame
        par = text_frame.paragraphs[0]
        run = par.add_run()
        print(run.font.italic) # returns None, should return True 
        print(run.font.bold) # returns None, should return True 

        print(text_frame.paragraphs)

我相信您的问题是如何找到字体格式化参数的“有效”值

一系列文本的格式由在样式层次结构上操作的一组规则确定。如果将格式化属性(如粗体)直接应用于运行,则优先。如果不直接应用粗体,run.bold将返回None,并且通过检查样式层次结构的其余部分来确定运行的“粗体”。这可能是幻灯片布局、幻灯片母版或主题或演示文稿的默认属性(可能还有其他可能性)


因此,找到有效值需要发现这些规则并导航样式层次结构,以便为任何给定的文本片段解析它们。python pptx中还没有API对此的支持。

通过循环段落,然后循环每个段落的运行,并使用run.font.italic,成功地绕过了这个问题。。。为我工作。希望它足够稳定。谢谢你,斯坎尼!