Выровнять текст по центру с помощью 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", но я просто не могу заставить его работать.
Заранее спасибо!
3 ответа
from pptx.enum.text import PP_ALIGN
shape.paragraphs[0].alignment = PP_ALIGN.CENTER
Это взято непосредственно из документов Python pptx. Это не работает для вас? Вы сказали в своем вопросе, что вы слышали о PP_PARAGRAPH_ALIGNMENT
но не могу заставить его работать. Какие проблемы возникают?
Вы можете просмотреть более подробную информацию о выравнивании Python Python здесь.
Сканни, который прокомментировал ниже меня, добавил замечательный момент, который решит вашу проблему:
Выравнивание абзаца (также известное как обоснование) является свойством абзаца и должно применяться отдельно к каждому абзацу. В коде, который вы включили в свой вопрос, если вы добавите строку 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
Имейте в виду, что вы можете переключаться между абзацами определенного text_frame, используя 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