2017-08-11 102 views
0

シェイプのフォント、サイズを設定するにはどうすればよいですか?

代わりに、一つのオブジェクト2つの別々のもの(形状、テキスト、シェイプの使い方ラン)Python-pptx - オートシェイプのテキストパラメータ(フォント、サイズ、位置)

ただ、オートシェイプ、オブジェクトのTextframeインスタンスにパラメータを設定する方法を得ることはありません。

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この質問は関連する –

答えて

2

デフォルト以外の文字書式(フォント)をシェイプに使用する場合は、実行レベルで操作する必要があります。それは文字の書式設定が生きる場所であり、単なる段落ではなく実行の理由の大部分を占めています。

だから、簡単な例:段落に多くの実行を追加することにより

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 

、あなたが持つことができ、例えば、通常はフォーマットされた言葉の文内部大胆な言葉など

詳細におよそhttp://python-pptx.readthedocs.io/en/latest/user/text.html#applying-character-formatting

関連する問題