2016-08-13 7 views
1

Frage kurz: Ist es möglich, Text in Python-pptx an der Mitte auszurichten?Text zentrieren mit Python-pptx

Seit ich Python-pptx benutze, konnte ich ziemlich viele Dinge automatisieren und ich genieße es wirklich, es zu benutzen! Ich bin jedoch auf ein Problem gestoßen. Ich versuche, meinen Text horizontal auf einer Folie zu zentrieren. Wenn Sie mich nicht verstehen:

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

Mein Text ist nun nach links ausgerichtet, ähnlich dem Text in den ersten beiden Absätzen. Ich möchte jedoch, dass sie wie die letzten beiden Absätze auf das Zentrum ausgerichtet sind. Dies ist ein Ausschnitt aus meinem Code:

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) 

ich in der Dokumentation sah, konnte aber nichts nützlich finden. Ich habe etwas über "MSO_VERTICAL_ANCHOR" und "PP_PARAGRAPH_ALIGNMENT" gelesen, aber ich kann es einfach nicht funktionieren lassen.

Vielen Dank im Voraus!

Antwort

2
from pptx.enum.text import PP_ALIGN 

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

Dies wird direkt aus dem Python pptx Docs genommen. Funktioniert das nicht für dich? Du hast in deiner Frage gesagt, dass du von PP_PARAGRAPH_ALIGNMENT gehört hast, aber es funktioniert nicht. Welche Probleme tauchen auf?

Sie können weitere Informationen über Python pptx Ausrichtung here anzeigen.

Scanny, die unter mir kommentiert hat einen wunderbaren Punkt, dass Ihr Problem lösen:

Absatzausrichtung (auch als Begründung genannt) ist eine Eigenschaft eines Absatzes und muss individuell auf jeden Absatz angewandt werden. Wenn Sie eine Zeile p.alignment = PP_ALIGN.CENTER hinzufügen, erhalten Sie in dem Code, den Sie in Ihre Frage eingefügt haben, das, wonach Sie suchen.

+0

Das ist in der Tat eine der Möglichkeiten, die ich ausprobiert habe. Ich habe 'shape' durch 'tf' ersetzt, was keine Fehler erzeugt hat, aber der Text ist immer noch nicht ausgerichtet (habe auch andere Möglichkeiten ausprobiert). Wahrscheinlich sollte es nicht "tf" sein, sondern etwas anderes, das ich nicht kenne. Wie auch immer, danke für deine Mühe! – PythonPupil1906

+2

@ PythonPupil1906 - Harrison hat ganz recht. Absatzausrichtung (auch bekannt als * Ausrichtung *) ist eine Eigenschaft eines Absatzes und muss für jeden Absatz einzeln angewendet werden. Wenn Sie in dem Code, den Sie in Ihre Frage eingefügt haben, eine Zeile 'p.alignment = PP_ALIGN.CENTER' hinzufügen, sollten Sie das bekommen, wonach Sie suchen. Vergessen Sie nicht, Harrisons Antwort als die "richtige" Antwort zu akzeptieren. So werden wir für die Beantwortung von Fragen "bezahlt". Außerdem sollten Sie im Allgemeinen den genauen Code angeben, den Sie ausprobiert haben und der nicht zu funktionieren scheint. – scanny

+0

@scanny Super Punkt! – Harrison