我正在尝试编写一个程序来更新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:组形状不能执行点击操作
答案 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显示在图片上,则他们必须添加文本框形状来保存它,然后很可能将两者组合在一起以便可以一起移动。这也可以解释您所遇到的情况。