Почему у меня есть ошибка формы группы на Python Pptx для одной формы? - PullRequest
1 голос
/ 17 октября 2019

Я пытаюсь написать программу для обновления гиперссылок в файле powerpoint. Гиперссылки встроены в несколько изображений в pptx.

Я использовал часть скрипта из вики Python pptx, но я получаю следующую ошибку: Ошибка типа: у формы группы не может быть действия щелчка

Я понимаю, что у формы группы не может быть гиперссылкино в моем случае это должна быть только одна фигура.

У кого-нибудь есть решение?

Спасибо

       prs = Presentation("My file")
       slides = [slide for slide in prs.slides]
       shapes = []
        for slide in slides:
            for shape in slide.shapes:
                shapes.append(shape)

        for slide in prs.slides:
            for shape in slide.shapes:
                click_action = shape.click_action
                if click_action.action == PP_ACTION.HYPERLINK:
                    print(click_action.hyperlink)

TypeError: у группы не может быть действия щелчка

1 Ответ

0 голосов
/ 17 октября 2019

Следующее позволяет определить, является ли рассматриваемая фигура группой:

from pptx.enum.shapes import MSO_SHAPE_TYPE

if shape.shape_type == MSO_SHAPE_TYPE.GROUP:
    print("Yep, it's a group-shape alright.")

Ничто не мешает группе иметь только одного члена, так что это может быть ситуация, с которой вы столкнулись. Вы можете перечислить «подфигуры» в группе следующим образом:

if shape.shape_type == MSO_SHAPE_TYPE.GROUP:
    group_shape = shape
    print("Subshapes are:")
    for s in group_shape.shapes:
        print("    %s" % s.shape_type)

Другое дело, что рисунки не имеют текстовой рамки, как другие фигуры. Поэтому, если кто-то хочет, чтобы текстовый URL отображался на картинке, ему нужно было бы добавить форму текстового поля для его хранения, и он вполне мог бы сгруппировать их, чтобы их можно было перемещать вместе. Это также может объяснить ситуацию, которую вы видите.

...