为什么我在python pptx上出现一种形状的组形状错误?

时间:2019-10-17 14:07:05

标签: python python-3.x python-pptx

我正在尝试编写一个程序来更新PowerPoint文件中的超链接。超链接嵌入在pptx中的多个图像中。

我使用了python pptx Wiki中的脚本的一部分,但出现以下错误:TypeError:组形状不能具有单击动作

我知道组形状不能具有超链接,但就我而言,它只能是一个形状。

有人可以解决吗?

谢谢

       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 :(得分:0)

以下允许您确定所讨论的形状是否为组:

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显示在图片上,则他们必须添加文本框形状来保存它,然后很可能将两者组合在一起以便可以一起移动。这也可以解释您所遇到的情况。