5

如何设置形状的字体、文本大小?

一个对象而不是两个单独的对象(形状和文本,如何使用形状运行)

只是不知道如何在 Autoshape 对象的 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')
4

1 回答 1

8

如果要在形状中使用非默认字符格式(字体),则需要在运行级别进行操作;这就是字符格式存在的地方,并且几乎是运行而不只是段落的全部原因。

一个简单的例子:

from pptx.util import Pt
from pptx.enum.shapes import MSO_SHAPE

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

于 2017-08-11T18:12:00.963 回答