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是一個整數單位長度,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<pptx.dml.color.ColorFormat object at 0x10ce20910>>>> 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中,這些顯示為小黃色鑽石,您可以拖動以更改形狀的外觀。他們通過一個程序工作有點繁瑣,但如果你有耐心讓他們正確,可以非常精確地實現一些非凡的效果。
常精確地實現一些非凡的效果
形狀調整概念
在嘗試通過調整進行認真的工作之前,有一些值得抓住的概念。
首先,調整特定於特定的自動形狀類型。每個自動形狀都有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
以上對如何玩轉自選圖形做了一個詳細的介紹,接下來將又會回到基礎的知識的學習中去了,下一節講解,了解佔位符.