0

i'm trying to recreate a simple PP_Action. The code below built without errors however the click action will not run in the slides.

'shape.click_action.action' returns with NONE(0) after action is being assigned. Is there anything wrong with the code? Couldn't find a base example on this. Please help.

from pptx import Presentation
from pptx.enum.shapes import MSO_SHAPE
from pptx.util import Cm
from pptx.enum.action import PP_ACTION

prs = Presentation('C:/Template.pptx')
slide = prs.slides.add_slide(prs.slide_layouts[0])

shape = slide.shapes.add_shape(MSO_SHAPE.RECTANGLE, Cm(-0.05),Cm(0.86),Cm(34),Cm(19))
shape.click_action.action == PP_ACTION.LAST_SLIDE
print(shape.click_action.action)

slide = prs.slides.add_slide(prs.slide_layouts[0])
slide = prs.slides.add_slide(prs.slide_layouts[0])
prs.save('C:/example.pptx')
Joel Hiou
  • 1
  • 1

1 Answers1

0

click_action.action is read-only, so assigning to it would raise an error. In your case, you used the == comparison operator which does nothing noticeable.

It's not actual LAST_SLIDE behavior, because that is dynamic, like you can add and delete slides and it still works, but this is a step closer to what you're after:

shape.click_action.target_slide = prs.slides[-1]
scanny
  • 26,423
  • 5
  • 54
  • 80