使用Python-pptx将文本居中对齐

10

问题简述: 如何在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”的内容,但我就是无法让它们起作用。

提前感谢您!

3个回答

12
from pptx.enum.text import PP_ALIGN

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

这段内容直接摘自Python pptx文档。如果这个方法对你不起作用,那么你在问题中提到了PP_PARAGRAPH_ALIGNMENT,但无法使用它,出现了什么问题呢?

你可以在这里查看有关Python pptx对齐的更多信息。

评论者Scanny在我的下面添加了一个很好的观点,可以解决你的问题:

段落对齐(也称为两端对齐)是段落的属性,必须逐个段落地应用。在你提问中的代码中,如果添加一行 p.alignment = PP_ALIGN.CENTER,你应该能够得到想要的效果。


您IP地址为143.198.54.68,由于运营成本限制,当前对于免费用户的使用频率限制为每个IP每72小时10次对话,如需解除限制,请点击左下角设置图标按钮(手机用户先点击左上角菜单按钮)。 - PythonPupil1906
3
@PythonPupil1906 - 哈里森说得很对。段落对齐(也称为*调整)是段落的属性,必须逐个段落地应用。在您提问中包含的代码中,如果添加一行 p.alignment = PP_ALIGN.CENTER,您应该可以得到您想要的效果。不要忘记接受哈里森的答案作为“正确”答案。这就是我们在这里回答问题时获得“报酬”的方式 :) 另外,通常情况下,您应该包括您尝试但似乎不起作用的确切代码。 - scanny
@scanny 太好了!终于可以工作了!感谢你的示例,scanny,你真的帮了我很大忙!Harrison,你也是,谢谢你们的时间和努力,祝你们有美好的一天! - PythonPupil1906
我在'text.py'中找不到对'PP_ALIGN'的引用。 - Europa

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')

0

对我有效的是使用PP_PARAGRAPH_ALIGNMENT

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

请记住,您可以使用for来在特定文本框的段落之间切换:
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

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接