使用 Python-pptx 居中对齐文本

Center-align text with Python-pptx

问题简而言之:是否可以在Python-pptx中将文本居中对齐?

自从我使用 Python-pptx 以来,我已经能够自动化很多事情,我真的很喜欢使用它!但是,我 运行 遇到了问题。我正在尝试将我的文本水平居中放置在幻灯片上。如果你不明白我的话:

我的文字现在左对齐,类似于前两段中的文字。但是,我希望它们与中心对齐,就像最后两段一样。这是我的代码片段:

left = Cm(3)
top = Cm(2.5)
width = Cm(15)
height = Cm(1)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
p = tf.add_paragraph()
run = p.add_run()
run.text = "Just an example"
font = run.font
font.size = Pt(30)

我查看了文档,但找不到任何有用的信息。我阅读了一些关于 "MSO_VERTICAL_ANCHOR" 和 "PP_PARAGRAPH_ALIGNMENT" 的内容,但我无法让它正常工作。

提前致谢!

from pptx.enum.text import PP_ALIGN

shape.paragraphs[0].alignment = PP_ALIGN.CENTER

这直接取自Python pptx Docs。这对你不起作用吗?您在问题中说过您听说过 PP_PARAGRAPH_ALIGNMENT 但无法使用它。出现了什么问题?

您可以查看有关 Python pptx 对齐方式的更多信息 here

Scanny,在我下面评论的人补充了一个很棒的观点,可以解决你的问题:

段落对齐(也称为对齐)是段落的 属性,必须单独应用于每个段落。在您问题中包含的代码中,如果您添加一行 p.alignment = PP_ALIGN.CENTER 您应该得到您想要的。

根据@scanny 和@Harrison 的回答,我得到了以下使用这两种方法的代码:

from pptx import Presentation
from pptx.util import Inches, Pt,Cm
from pptx.enum.text import PP_ALIGN


prs = Presentation()
blank_slide_layout = prs.slide_layouts[6]
slide = prs.slides.add_slide(blank_slide_layout)

left = Cm(3)
top = Cm(2.5)
width = Cm(15)
height = Cm(1)
txBox = slide.shapes.add_textbox(left, top, width, height)
tf = txBox.text_frame
tf.text = "Hello"
txBox.text_frame.paragraphs[0].alignment = PP_ALIGN.CENTER

p = tf.add_paragraph()
p.alignment = PP_ALIGN.CENTER
run = p.add_run()
run.text = "Just an example"
font = run.font


prs.save('test.pptx')

对我有用的是使用 PP_PARAGRAPH_ALIGNMENT

from pptx.enum.text import PP_PARAGRAPH_ALIGNMENT
shape.paragraphs[0].alignment = PP_PARAGRAPH_ALIGNMENT.CENTER

请记住,您可以使用 for:

在某个 text_frame 的段落之间切换
for paragraph in cell.text_frame.paragraphs:
                paragraph.font.color.rgb = RGBColor(255, 255, 255)
                paragraph.font.size = Pt(9)   
                paragraph.alignment = PP_PARAGRAPH_ALIGNMENT.CENTER