Я предполагаю, что под «определить» вы подразумеваете что-то вроде «обнаружить», так как обычно нет веских причин для изменения существующих значений.
Хороший способ начать - это просмотреть и распечатать некоторые атрибуты:
prs = Presentation("my-deck.pptx")
for slide in prs.slides:
for shape in prs.shapes:
print("id: %s, type: %s" % (shape.shape_id, shape.shape_type))
Вы можете получить как можно более сложную информацию, используя любые атрибуты слайда и / или формы, перечисленные в документации API здесь:
https://python -pptx.readthedocs.io / en / latest / api / shape.html # shape-objects-in-general
Для поиска фигуры по идентификатору (или имени) необходим код, подобный следующему:
def find_shape_by_id(shapes, shape_id):
"""Return shape by shape_id."""
for shape in shapes:
if shape.shape_id == shape_id:
return shape
return None
или, если вы делаете много, вы можете использовать dict
для этой работы:
shapes_by_id = dict((s.shape_id, s) for s in shapes)
, который затем дает вам все удобные методы, такие как:
>>> 7 in shapes_by_id
True
>>> shapes_by_id[7]
<pptx.shapes.Shape object at 0x...>