Как поместить несколько тем оформления в «slide_layouts» на python -pptx - PullRequest
0 голосов
/ 17 января 2020

Я пытался использовать некоторые пользовательские макеты для python -pptx prs, но когда я вызываю метод prs.slide_layouts, он возвращает только некоторые макеты, только из одной из тем макета. Используемая мной презентация имеет почти 100 макетов, но когда я вызываю следующий код, она печатает 12 цифр (по порядку от 1 до 11).

from pptx import Presentation
from pptx.util import Inches, Pt

for slide_layout in prs.slide_layouts:
    print(prs.slide_layouts.index(slide_layout))

Вывод:

0
1
2
3
4
5
6
7
8
9
10
11

Как мне получить доступ ко всем темам макетов на python -pptx? Спасибо.

1 Ответ

1 голос
/ 17 января 2020

Каждый макет слайда принадлежит одному-единственному мастеру слайдов.

prs.slide_layouts - удобное сочетание клавиш для prs.slide_masters[0].slide_layouts; удобно, потому что большинство презентаций имеют только один мастер слайдов.

Если у вас есть несколько мастеров слайдов, то вам нужно четко указать, из какого из них вы хотите извлечь. Может быть что-то вроде:

def iter_all_layouts(prs):
    """Generate each slide layout in the presentation, across all slide masters."""
    for master in prs.slide_masters:
        for layout in master.slide_layouts:
            yield layout

Или, если вы знаете, что хотите третий макет второго мастера:

prs.slide_masters[1].slide_layouts[2]
...