python 美化ppt_python自动化PPT:如何玩转自选图形

这篇博客深入介绍了如何在Python中使用`python-pptx`库操作PPT的自选图形。内容涵盖添加自动形状、理解英制和公制单位、设置形状位置和尺寸、填充与边框格式化、调整自选图形以及线条格式。通过示例代码展示了如何创建、定位、调整和格式化图形,为创建精彩PPT提供了实用技巧。
摘要由CSDN通过智能技术生成

python自动化PPT:如何玩转自选图形

上节对python自动化PPT的图形基本概念做了详细介绍,当然,要作出一篇精彩的PPT文档,精彩的自选图形必须要掌握,这节继续来解读这方面的知识。

b7fd5266d01609247368d549d72af4fee7cd34c0.jpeg?token=8ddeec329d33c66225cc9ea38b3851d8&s=B2B669222AB67FAB1EC0CD630300A030

如何玩转自选图形

自选图形基础

自动形状是规则的形状。正方形,圆形,三角形,星形,那种东西。有182种不同的汽车形状可供选择。其中120个具有调整“手柄”,您可以使用它来改变形状,有时是戏剧性的。

许多形状类型共享一组共同的属性。我们将在这里介绍其中的许多,因为其中一些形状只是AutoShape的一种特殊形式。

添加自动形状

下面的代码添加了一个圆角矩形形状,一个英寸的正方形,并且距离幻灯片的左上角一英寸:

from pptx.enum.shapes import MSO_SHAPEshapes = slide.shapesleft = top = width = height = Inches(1.0)shape = shapes.add_shape( MSO_SHAPE.ROUNDED_RECTANGLE, left, top, width, height)有关所有182种自动形状类型的列表,请参阅MSO_AUTO_SHAPE_TYPE枚举页面。

了解英制公制单位

在前面的示例中,我们将位置和维度值设置为表达式Inches(1.0)。那是什么意思?

267f9e2f07082838c6ed950cbbb468054d08f1fc.jpeg?token=897378905ca95ca065dcbcc5a49ded70&s=F8A31F74719346770EC6FCC7030060F9

Inches

在内部,PowerPoint以英制公制单位(EMU)存储长度值。EMU是一个整数单位长度,914400英寸。Office文档中的大多数长度都存储在EMU中。914400具有很大的优点,它可以在英寸和厘米之间进行精确转换。

正如您可能想象的那样,直接在EMU中工作是不方便的。为了方便起见,python-pptx提供了一组值类型,以便于规范和转换为方便的单元:

>>> from pptx.util import Inches, Pt>>> length = Inches(1)>>> length914400>>> length.inches1.0>>> length.cm2.54>>> length.pt72.0>>> length = Pt(72)>>> length914400有关pptx.util的API文档中提供了更多详细信息

形状位置和尺寸

所有形状在其滑块上都有一个位置并且具有一定的尺寸。通常,在创建形状时指定位置和大小。位置和大小也可以从现有形状中读取并更改:

>>> from pptx.enum.shapes import MSO_SHAPE>>> left = top = width = height = Inches(1.0)>>> shape = shapes.add_shape(>>> MSO_SHAPE.ROUNDED_RECTANGLE, left, top, width, height>>> )>>> shape.left, shape.top, shape.width, shape.height(914400, 914400, 914400, 914400)>>> shape.left.inches1.0>>> shape.left = Inches(2.0)>>> shape.left.inches2.0填充

自选图形的外边缘有一个轮廓。该轮廓中出现的内容称为形状填充。

最常见的填充类型是纯色。形状也可以用渐变,图片,图案(例如交叉影线)填充,或者可以没有填充(透明)。

当使用颜色时,可以将其指定为特定RGB值或来自主题调色板的颜色。

因为有很多选项,填充API有点复杂。此代码将形状的填充设置为红色:

>>> fill = shape.fill>>> fill.solid()>>> fill.fore_color.rgb = RGBColor(255, 0, 0)这会将其设置为工具栏面板中显示为“Accent 1 - 25%Darker”的主题颜色:

>>> from pptx.enum.dml import MSO_THEME_COLOR>>> fill = shape.fill>>> fill.solid()>>> fill.fore_color.theme_color = MSO_THEME_COLOR.ACCENT_1>>> fill.fore_color.brightness = -0.25这会将形状填充设置为透明,或者在PowerPoint UI中调用“无填充”:

>>> shape.fill.background()如您所见,第一步是通过在fill上调用相应的方法来指定所需的填充类型。这样做实际上会更改填充对象上可用的属性。例如,.fore_color在调用其.background()方法后引用fill对象将引发异常:

>>> fill = shape.fill>>> fill.solid()>>> fill.fore_color>>> fill.background()>>> fill.fore_colorTraceback (most recent call last): ...TypeError: a transparent (background) fill has no foreground color线

AutoShape的轮廓也可以格式化,包括设置其颜色,宽度,破折号(实线,虚线,点线等),线条样式(单,双,厚薄等),端盖,连接类型,和别的。在撰写本文时,可以使用python-pptx设置颜色和宽度:

>>> line = shape.line>>> line.color.rgb = RGBColor(255, 0, 0)>>> line.color.brightness = 0.5 # 50% lighter>>> line.width = Pt(2.5)主题颜色也可用于线条:

>>> line.color.theme_color = MSO_THEME_COLOR.ACCENT_6Shape.line有属性.color。这本质上是一个快捷方式:

>>> line.fill.solid()>>> line.fill.fore_color这对于行格式化是有意义的,因为形状轮廓最常设置为纯色。例如,要将线路设置为透明,则需要直接访问填充:

>>> line.fill.background()线宽

形状轮廓还具有读/写宽度属性:

>>> line.width9525>>> line.width.pt0.75>>> line.width = Pt(2.0)>>> line.width.pt2.0调整自动形状

在PowerPoint中,这些显示为小黄色钻石,您可以拖动以更改形状的外观。他们通过一个程序工作有点繁琐,但如果你有耐心让他们正确,可以非常精确地实现一些非凡的效果。

aa64034f78f0f736886f72390e78721debc41321.jpeg?token=3261b3e058eb2b2107abb743bf8c57fd&s=3AA9A209DA259EDE920CF68B0300E085

常精确地实现一些非凡的效果

形状调整概念

在尝试通过调整进行认真的工作之前,有一些值得抓住的概念。

首先,调整特定于特定的自动形状类型。每个自动形状都有0到8个调整。

调整值是大整数,每个整数基于100,000的标称值。调整的有效值与形状的宽度或高度成比例。因此,x坐标调整的值为50,000,对应于形状宽度的一半; y坐标调整的值为75,000,对应于形状高度的3/4。

调整值可以是负数,通常表示坐标位于形状左上角(原点)的左侧或上方。值也可以受到限制,这意味着它们的有效值不能超出规定范围。实际上,这对应于例如不能延伸到形状的左侧之外的点。

以下代码使用其调整格式化标注形状:

callout_sp = shapes.add_shape(

MSO_SHAPE.LINE_CALLOUT_2_ACCENT_BAR, left, top, width, height

)

# get the callout line coming out of the right place

adjs = callout_sp.adjustments

adjs[0] = 0.5 # vert pos of junction in margin line, 0 is top

adjs[1] = 0.0 # horz pos of margin ln wrt shape width, 0 is left side

adjs[2] = 0.5 # vert pos of elbow wrt margin line, 0 is top

adjs[3] = -0.1 # horz pos of elbow wrt shape width, 0 is margin line

adjs[4] = 3.0 # vert pos of line end wrt shape height, 0 is top

a5 = adjs[3] - (adjs[4] - adjs[0]) * height/width

adjs[5] = a5 # horz pos of elbow wrt shape width, 0 is margin line

# rotate 45 degrees counter-clockwise

callout_sp.rotation = -45.0

以上对如何玩转自选图形做了一个详细的介绍,接下来将又会回到基础的知识的学习中去了,下一节讲解,了解占位符.

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值