цикл через параметры функции для создания презентации Power Point - PullRequest
0 голосов
/ 07 июня 2019

Я пытаюсь определить функцию для создания презентации Power Point по python-pptx.
У меня есть свой собственный шаблон Power Point и несколько изображений должны быть встроены в каждый слайд. Я использовал *, чтобы разрешить произвольное количество аргументов для функций.

Например, у меня есть 3 iamges (.png). Я хочу поместить каждое изображение в разные слайды, сказал 3 здесь.
Код, который я пробовал:

from pptx import Presentation
from pptx.util import Inches

def Create_PPT(oldFileName, newFileName, *img):
    prs = Presentation(oldFileName)
    # Create the slides for images
    for image in *img:
        graph_slide_layout = prs.slide_layouts[9]  # 9 is the customized template I create in my oldfile.
        slide = prs.slides.add_slide(graph_slide_layout)
        title = slide.shapes.title
        title.text = image
        left = Inches(0.7)
        top = Inches(0.75)
        height = Inches(6)
        width = Inches(12)
        pic = slide.shapes.add_picture(image, left, top, width = width, height = height)

    prs.save(newFileName)

Create_PPT('mystyle.pptx', 'new.pptx', 'test1.png', 'test2.png', 'test3.png')

Я получил ошибку:

for image in *img:
             ^
SyntaxError: invalid syntax    

Более того, я думаю, что мой код неполон. Чтобы просмотреть и добавить слайды, я думаю, мне также нужно добавить больше синтаксиса.

for index, _ in enumerate(prs.slide_layouts):
        slide = prs.slides.add_slide(prs.slide_layouts[index])

Однако это не правильно. Выше кода просто перебрать, чтобы создать различные макеты слайдов. Мое расположение слайдов исправлено, 9 здесь.
Поэтому я думаю, что мне нужно перебрать prs.slides.add_slide(), но я не уверен в этом, поскольку я получаю ошибки при каждой попытке.

На выходе будет 3 слайда с изображением на каждом, а заголовок каждого слайда - это имя изображения, test1, test2 и test3.
Любое предложение по этому поводу?

1 Ответ

1 голос
/ 07 июня 2019

img - это список, я полагаю, вы просто хотите перебрать его:

for image in img:
    ...
...