请教python-pptx中设置auto size无效

麻烦再请教一下,python-pptx库中,text_frame没有height参数,只有shape有height参数,而自动扩展高度只有text_frame有auto size设置,但像如下设置MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT后,无论是文本框还是placeholder的高度都不会变化。不管是框大于文字,还是文字大于框,实际上框都不变,只有到ppt中手动点设置才会变。
不知有没有方法能使这个文本框或placeholder按照文字内容变化,并取得真正的高度吗?
需要获得最后一行文字底边的位置,在底下添加其他内容。谢谢!
tf.wrap = True
tf.auto_size = MSO_AUTO_SIZE.SHAPE_TO_FIT_TEXT

是的,您提到的是一个在python-pptx库中存在的问题。text_frame确实没有height属性,而是由它的父级shape来定义高度。在使用auto_size设置后,text_frame应该自动适应文本大小并扩展其父级shape。但是,目前auto_size属性的实现不够完美,您遇到的问题是由此引起的。

有一种解决方案是手动计算文本高度并更改其父级shape的高度。以下是一种可能的方法:

from pptx.util import Inches

# 获取文本框
shape = slide.shapes[0]
text_frame = shape.text_frame

# 添加文本
paragraph = text_frame.add_paragraph()
run = paragraph.add_run()
run.text = 'Hello, world!'

# 获取字体和字号
font_size = run.font.size.pt
font_name = run.font.name

# 计算文本高度
text_height = len(run.text) * (font_size / 2)

# 调整shape高度
shape.height = Inches(text_height + 0.2) # 0.2是一些额外空间

# 添加其他内容
shape = slide.shapes.add_shape(
    MSO_SHAPE.RECTANGLE, Inches(1), Inches(text_height + 0.4), Inches(2), Inches(1)
)

这段代码将在文本框中添加一行文本,并根据文本高度调整shape的高度。在此之后,将添加另一个shape,该shape将显示在文本下方。

需要注意的是,这只是一种解决方案,您可能需要根据您的具体需求进行调整。