我使用python-pptx库进行pptx操作。我想在pptx文档中添加一个项目符号列表。
我正在使用以下代码片段来添加列表项:
p = text_frame.add_paragraph()
run = p.add_run()
p.level = 0
run.text = "First"但它不显示项目符号;请指导。
发布于 2020-02-29 04:21:16
目前还不能使用python-pptx访问bullet属性,但我想分享一个对我很有用的解决方法。
这需要使用pptx模板,在该模板中,我们利用了幻灯片布局中的级别可以单独定制的事实。
例如,在幻灯片布局中,您可以将级别0设置为普通文本,将级别1设置为项目符号,将级别2设置为数字或您想要的任何其他列表样式。然后,您可以修改字体大小、缩进(使用顶部的标尺)和每个级别的任何其他属性,以获得所需的外观。
对于我的用例,我只是将级别1和级别2设置为与级别0具有相同的缩进和大小,这样只需将级别设置为相应值,就可以创建项目符号列表和编号列表。
这是我的幻灯片布局在模板文件中的外观:slide layout example
下面是我如何在代码中设置相应的列表样式:
p.level = 0 # Regular text
p.level = 1 # Bullet
p.level = 2 # Numbers从理论上讲,你应该能够完全按照你想要的方式设置它,即使是缩进的子列表等等。我所知道的唯一限制是,在幻灯片布局中似乎最多有8个级别可以自定义。
发布于 2019-02-03 20:19:07
试试这个:
p = text_frame.add_paragraph()
p.level = 0
p.text = "First"或者如果text_frame已经有一个段落:
p = text_frame.paragraphs[0]
p.level = 0
p.text = "First"发布于 2020-10-16 20:48:00
我的解决方案是:
from pptx.oxml.xmlchemy import OxmlElement
def SubElement(parent, tagname, **kwargs):
element = OxmlElement(tagname)
element.attrib.update(kwargs)
parent.append(element)
return element
def makeParaBulletPointed(para):
"""Bullets are set to Arial,
actual text can be a different font"""
pPr = para._p.get_or_add_pPr()
## Set marL and indent attributes
pPr.set('marL','171450')
pPr.set('indent','171450')
## Add buFont
_ = SubElement(parent=pPr,
tagname="a:buFont",
typeface="Arial",
panose="020B0604020202020204",
pitchFamily="34",
charset="0"
)
## Add buChar
_ = SubElement(parent=pPr,
tagname='a:buChar',
char="•")https://stackoverflow.com/questions/49384134
复制相似问题