使用Python-pptx对齐文本

时间:2016-08-13 17:10:22

标签: python powerpoint python-pptx

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

由于我使用的是Python-pptx,我已经能够自动化很多东西,我真的很喜欢使用它!但是,我遇到了一个问题。我试图将文本水平放在幻灯片上。如果你不理解我:

See how the first two paragraphs differ from the other two?

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

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",但我无法让它发挥作用。

提前谢谢!

2 个答案:

答案 0 :(得分:4)

from pptx.enum.text import PP_ALIGN

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

这是直接从Python pptx Docs获取的。这不适合你吗?你在问题中说你听说过PP_PARAGRAPH_ALIGNMENT但是无法让它发挥作用。出现了什么问题?

您可以查看有关Python pptx alignment here的更多信息。

Scanny,在我下面发表评论,为我的问题添加了一个很好的观点:

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

答案 1 :(得分:0)

基于@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')