为什么python pptx中有一个形状的组形状错误?

为什么python pptx中有一个形状的组形状错误?,python,python-3.x,python-pptx,Python,Python 3.x,Python Pptx,我正在尝试编写一个程序来更新powerpoint文件中的超链接。超链接嵌入在pptx中的多个图像中 我使用了PythonPPTX wiki中的一部分脚本,但出现了以下错误:TypeError:组形状不能有单击操作 我知道组形状不能有超链接,但在我的情况下,它应该只有一个形状 有人有解决办法吗 谢谢 prs = Presentation("My file") slides = [slide for slide in prs.slides] shapes =

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

我使用了PythonPPTX 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:组形状不能有单击操作。以下允许您确定所讨论的形状是否为组:

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,他们就必须添加一个文本框形状来容纳它,然后很可能将这两个文本URL分组,以便它们可以一起移动。这也可以解释你所看到的情况。

谢谢你的回答,它非常有用。我现在可以看到子图形了。实际上,文本不会显示在图片上,但是当用户单击图片时,它会打开一个网页。我尝试创建另一个for循环来访问每个单独的形状,以便单击\u action=shape。单击\u action不会返回错误,但我没有成功。。。实际上,该程序会反复播放许多powerpoint演示文稿,这可能是原因吗?欢迎使用stackoverflow!如果这回答了你的问题,请接受答案。这就是stackoverflow经济的运作方式。如果这个答案引出了一个新问题,请单独发布该问题。