7

简而言之:是否可以在 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”的东西,但我就是无法让它工作。

先感谢您!

4

2 回答 2

9
from pptx.enum.text import PP_ALIGN

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

这是直接取自Python pptx Docs。这对你不起作用吗?您在问题中说您听说过PP_PARAGRAPH_ALIGNMENT但无法正常工作。出现了哪些问题?

您可以在此处查看有关 Python pptx 对齐的更多信息。

Scanny,在我下面发表评论添加了一个可以解决您问题的精彩观点:

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

于 2016-08-13T17:36:11.903 回答
1

根据@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')
于 2020-09-17T10:33:54.857 回答