自动形状是可以被填充颜色的,如果没有填充,它会有默认颜色,比如说上面代码中添加的圆角矩形,并没有设置填充颜色,但用PPT软件打开之后会发现它是蓝色的。如果要修改这些自动形状的颜色,可以访问Shape对象的f i ll属性,它会返回一个FillFormat对象,我们可以通过FillFormat对象控制Shape的颜色,主要是前景色和背景色。代码如下:
from pptx import Presentation
from pptx.dml.color import RGBColor,ColorFormat
from pptx.util import Inches
ppt = Presentation()
slide = ppt.slides.add_slide(ppt.slide_layouts[0])
left = top = width = height = Inches(3)
shape = slide.shapes.add_shape(5,left,top,width,height)
fill = shape.fill
print(type( fill)) # 输出:<class 'pptx.dml.fill.FillFormat'>
# 使用纯色
fill.solid()
# 修改前景色
fill.fore_color.rgb = RGBColor.from_string("F0FFF0")
print( fill.fore_color.rgb) # 输出:F0FFF0
# 继承父元素颜色
fill.patterned()
print( fill.back_color.rgb) # 输出:FFFFFF
# 变透明
fill.background()
ppt.save("./ppt_ files/test.pptx")
前景色就是我们打开PPT可以最直观地看到的颜色,如果要设置前景色,一定要先调用一下FillFormat对象的solid()方法,然后再修改该对象fore_color.rgb属性的值,不然程序会报错的。关于RGB颜色的知识点之前已经讲过了,这里不再赘述,至于颜色的表示,还是得用到我们的老朋友RGBColor类。背景色是通过调用FillFormat对象的patterned()方法继承父元素的颜色。
如果想要设置前景色为透明,直接调用一下FillFormat对象的background()方法即可,但是要注意,一旦调用了background()之后再访问fore_color就会报错,因为已经没有前景色了。