python自动化PPT:如何玩转自选图形
上节对python自动化PPT的图形基本概念做了详细介绍,当然,要作出一篇精彩的PPT文档,精彩的自选图形必须要掌握,这节继续来解读这方面的知识。
如何玩转自选图形
自选图形基础
自动形状是规则的形状。正方形,圆形,三角形,星形,那种东西。有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)。那是什么意思?
Inches
在内部,PowerPoint以英制公制单位(EMU)存储长度值。EMU是一个整数单位长度,英寸。Office文档中的大多数长度都存储在EMU中。具有很大的优点,它可以在英寸和厘米之间进行精确转换。
正如您可能想象的那样,直接在EMU中工作是不方便的。为了方便起见,python-pptx提供了一组值类型,以便于规范和转换为方便的单元:
>>> from pptx.util import Inches, Pt>>> length = Inches(1)>>> length>>> length.inches1.0>>> length.cm2.54>>> length.pt72.0>>> length = Pt(72)>>> length
有关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(, , , )>>> 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
线
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_6
Shape.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中,这些显示为小黄色钻石,您可以拖动以更改形状的外观。他们通过一个程序工作有点繁琐,但如果你有耐心让他们正确,可以非常精确地实现一些非凡的效果。
常精确地实现一些非凡的效果
形状调整概念
在尝试通过调整进行认真的工作之前,有一些值得抓住的概念。
首先,调整特定于特定的自动形状类型。每个自动形状都有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
以上对如何玩转自选图形做了一个详细的介绍,接下来将又会回到基础的知识的学习中去了,下一节讲解,了解占位符.
标签: 形状
②文章观点仅代表原作者本人不代表本站立场,并不完全代表本站赞同其观点和对其真实性负责。
③文章版权归原作者所有,部分转载文章仅为传播更多信息、受益服务用户之目的,如信息标记有误,请联系站长修正。
④本站一律禁止以任何方式发布或转载任何违法违规的相关信息,如发现本站上有涉嫌侵权/违规及任何不妥的内容,请第一时间反馈。发送邮件到 88667178@qq.com,经核实立即修正或删除。