Как изменить размер шрифта объекта Python pptx - PullRequest
0 голосов
/ 31 января 2019

Я хотел бы изменить размер шрифта заголовка и тела моей презентации pptx.Я пытался установить его через title_shape.font = Pt(15) и body_shape.font = Pt(10), что не работает.

Вот мой код:

from pptx import Presentation, util, text
from pptx.util import Cm, Pt
import fnmatch
import os

import contentOf_pptx as contOfPres


# ..............
# Generate presentation
# ..............
prs = Presentation()
#blank_slide_layout = prs.slide_layouts[6] #blank layout, see slide layout in powerpoint
title_only = prs.slide_layouts[5] #title only, see slide layout in powerpoint 



# ..............
# set layout
# ..............
bullet_slide_layout = prs.slide_layouts[1]
slide = prs.slides.add_slide(bullet_slide_layout)
shapes = slide.shapes

title_shape = shapes.title
title_shape.font = Pt(15)

body_shape = shapes.placeholders[1]
body_shape.font = Pt(10)

# ..............
# set relevant text objects
# ..............
title_shape.text = 'Test Title'

tf = body_shape.text_frame
tf.text = 'Test SubText'


# ----------------------------------
# Store pptx
# ----------------------------------
prs.save('C:\\tests\\test_pptx_python.pptx')

1 Ответ

0 голосов
/ 31 января 2019

A Shape объект не имеет атрибута .font (по крайней мере, его не было, пока вы не добавили его, присвоив этому имени:)

Font характерно для Runобъект;цикл - это последовательность символов, которые имеют одинаковое форматирование символов, также широко известное как шрифт .

A Paragraph объект также имеет .font свойство, которое используется таким же образом, но которое определяет шрифт по умолчанию для прогонов в абзаце.Отдельные прогоны в этом абзаце могут переопределить это значение по умолчанию, установив атрибуты своего собственного объекта шрифта.

Если вам нужен только один шрифт для фигуры (что является распространенным), вероятно, самый быстрый способ:

shape.text_frame.paragraphs[0].font.size = Pt(15)

, который работает, потому что большинство фигур содержат только один абзац (и все должны содержать хотя бы один).

Более подробным будет:

for paragraph in shape.text_frame.paragraphs:
    paragraph.font.size = Pt(15)

, а более подробным будетбыть:

for paragraph in shape.text_frame.paragraphs:
    for run in paragraph.runs:
        run.font.size = Pt(15)

Подробнее об этом в документации здесь:
https://python -pptx.readthedocs.io / en / latest / user / text.html

...