2017-08-11 6 views
0

Comment puis-je définir la police, la taille du texte pour la forme?

un objet au lieu de deux (les séparés de forme et texte, comment l'exécution de l'utilisation de la forme)Python-pptx - Paramètres de texte (police, taille, position) sur la forme automatique

Il suffit de ne pas comment définir les paramètres sur TextFrame instance de la Autoshape objet.

from pptx import Presentation 
from pptx.enum.shapes import MSO_SHAPE 
from pptx.enum.dml import MSO_THEME_COLOR 
from pptx.enum.text import MSO_ANCHOR, MSO_AUTO_SIZE 
from pptx.util import Inches, Pt 

prs = Presentation('Input.pptx') 
slide_layout = prs.slide_layouts[2] 
slide = prs.slides.add_slide(slide_layout) 
shape = slide.shapes 
#Title 
shape.title.text = "Title of the slide" 
# Shape position 
left = Inches(0.5) 
top = Inches(1.5) 
width = Inches(2.0) 
height = Inches(0.2) 

box = shape.add_shape(MSO_SHAPE.RECTANGLE, left, top, width, height) 
#Fill 
fill = box.fill 
line = box.line 
fill.solid() 
fill.fore_color.theme_color = MSO_THEME_COLOR.ACCENT_2 
line.color.theme_color = MSO_THEME_COLOR.ACCENT_2 
# How can I set font, size of text for the shape ? 
# One Object for instead two seperate ones 
#box_text.font.bold = True 

# Text position 
t_left = Inches(0.5) 
t_top = Inches(1.4) 
t_width = Inches(2.0) 
t_height = Inches(0.4) 
#Text 
txBox = slide.shapes.add_textbox(t_left, t_top, t_width,t_height) 
tf = txBox.text_frame.paragraphs[0] 
tf.vertical_anchor = MSO_ANCHOR.TOP 
tf.word_wrap = False 
tf.margin_top = 0 
tf.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT 
run = tf.add_run() 
run.text = "Text on the Shape" 
font = run.font 
font.name = 'Calibri' 
font.size = Pt(18) 
font.bold = True 
font.italic = None # cause value to be inherited from theme 
font.color.theme_color = MSO_THEME_COLOR.ACCENT_5 
prs.save('Out.pptx') 
+0

https://stackoverflow.com/questions/45600820/how-do-you-set-the-font-size-of-a-chart-title-with-python-pptx cette question semble être lié –

Répondre

2

Si vous souhaitez un formatage de caractère autre que celui par défaut (police) dans une forme, vous devez opérer au niveau d'exécution; C'est là que le formatage de caractères vit et est à peu près toute la raison d'avoir des courses au lieu de seulement des paragraphes.

Ainsi, un exemple simple:

from pptx.util import Pt 

shape = shapes.add_shape(MSO_SHAPE.RECTANGLE, left, top, width, height) 
text_frame = shape.text_frame 
text_frame.clear() # not necessary for newly-created shape 

p = text_frame.paragraphs[0] 
run = p.add_run() 
run.text = 'Spam, eggs, and spam' 

font = run.font 
font.name = 'Calibri' 
font.size = Pt(18) 
font.bold = True 

En ajoutant plus de points au paragraphe, vous pouvez, par exemple, les mots en gras à l'intérieur d'une phrase de mots normalement formatés, etc.

Plus de détails sur et autour: http://python-pptx.readthedocs.io/en/latest/user/text.html#applying-character-formatting