python-pptx 的layout 布局

一、布局基礎概念

在 PowerPoint 中,布局(Layout) 決定了幻燈片的占位符(如標題、內容、圖片等)的排列方式。python-pptx 提供了對布局的編程控制。


二、默認布局類型及索引

通過 prs.slide_layouts[index] 訪問,以下是常見默認布局(不同模板可能有變化):

索引布局名稱包含占位符備注
0Title Slide主標題 + 副標題
1Title and Content標題 + 正文/圖片/圖表
2Section Header章節標題 + 描述文字
3Two Content標題 + 左右兩欄內容
5Title Only僅標題
6Blank空白幻燈片
7Content with Caption標題 + 圖片 + 底部說明文字
8Picture with Caption標題 + 大圖 + 底部文字

三、代碼實戰:布局操作
1. 查看所有布局
from pptx import Presentationprs = Presentation()
for idx, layout in enumerate(prs.slide_layouts):print(f"Layout {idx}: {layout.name}")for shape in layout.placeholders:print(f"  - 占位符類型: {shape.placeholder_format.type}")
2. 添加帶標題和內容的幻燈片
slide = prs.slides.add_slide(prs.slide_layouts[1])  # Title and Content
slide.shapes.title.text = "這是標題"
content = slide.placeholders[1]  # 內容占位符
content.text = "第一點\n第二點"  # 或插入圖片/圖表
3. 強制修改布局元素

如果布局不包含所需占位符,手動添加:

from pptx.util import Inchesslide = prs.slides.add_slide(prs.slide_layouts[6])  # Blank
# 手動添加標題
title_box = slide.shapes.add_textbox(Inches(1), Inches(0.5), Inches(8), Inches(1))
title_box.text = "自定義標題"

四、布局選擇策略
場景推薦布局代碼示例
封面頁Layout 0 (Title Slide)prs.slide_layouts[0]
圖文混合頁Layout 1 (Title and Content)prs.slide_layouts[1]
純圖片展示Layout 8 (Picture with Caption)prs.slide_layouts[8]
分欄內容Layout 3 (Two Content)prs.slide_layouts[3]
自定義自由排版Layout 6 (Blank)prs.slide_layouts[6]

五、高級技巧
1. 檢查占位符是否存在
slide = prs.slides.add_slide(prs.slide_layouts[1])
if slide.shapes.title:print("當前布局包含標題占位符")
2. 替換占位符為圖片
slide = prs.slides.add_slide(prs.slide_layouts[1])
slide.shapes.title.text = "數據報告"
picture = slide.placeholders[1].insert_picture("chart.png")
3. 自定義布局(需修改模板)
  1. 在 PowerPoint 中設計自定義布局并保存為 .pptx 文件
  2. 代碼加載自定義模板:
    prs = Presentation("custom_template.pptx")
    slide = prs.slides.add_slide(prs.slide_layouts[10])  # 假設自定義布局索引為10
    

六、常見問題

Q1:為什么 slide.shapes.title 返回 None

  • 原因:當前布局無標題占位符
  • 解決:換用含標題的布局(如索引0/1/5),或手動添加文本框

Q2:如何調整占位符位置?

  • 通過 placeholder.element.getparent().remove() 刪除原有占位符
  • add_textbox()add_picture() 自定義位置

Q3:布局與主題的關系?

  • 布局依賴于主題(Theme),更換主題可能影響占位符樣式

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/89611.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/89611.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/89611.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

服務器mysql數據的簡單備份腳本

服務器mysql數據的簡單備份腳本 一個小型項目mysql數據庫數據的定時備份 通過crontab定時執行腳本: 0 1 * * * /home/yuyu/mysqlbak.sh備份文件加入時間戳,防止覆蓋支持刪除超過x天的備份數據文件,防止備份數據文件太多 #!/bin/bash# 配置變量 DB_HOST"127.0.…

數據分析:從數據到決策的核心邏輯與實踐指南

在數據驅動決策的時代,“數據分析” 早已不是專業分析師的專屬技能,而是每個職場人都需要掌握的基礎能力。但很多人在面對數據時,常會陷入 “羅列數據卻無結論”“指標好看卻解決不了問題” 的困境。本文將基于數據分析的核心定義、關鍵維度和…

元宇宙與Web3.0:技術特征、關系及挑戰

一、元宇宙的技術特征(2025年)1. 空間構建技術3D建模與渲染:實時渲染技術(如Unity HDRP)實現路徑追蹤光追,AI生成模型(NVIDIA Get3D)3秒生成3D場景。數字孿生技術:城市級…

關于一個引力問題的回答,兼談AI助學作用

關于一個引力問題的回答,兼談AI助學作用今日,一個小朋友問我,他從一本物理科普讀物上看到這樣依據話:地球對人造地球衛星的引力大于太陽對人造地球衛星的引力,但太陽對月亮的引力大于地球對月亮的引力。因書上沒有解釋…

Java使用FastExcel實現模板寫入導出(多級表頭)

依賴配置 (Maven pom.xml)<dependencies><!-- FastExcel 核心庫 --><dependency><groupId>cn.idev.excel</groupId><artifactId>fastexcel</artifactId><version>1.0.0</version></dependency><!-- Apache POI…

postman接口測試,1個參數有好幾個值的時候如何測試比較簡單快速?

3天精通Postman接口測試手動到自動&#xff0c;全套項目實戰教程&#xff01;&#xff01;當你在 Postman 中測試接口時&#xff0c;如果一個參數有多個需要測試的值&#xff0c;有幾種高效的方法可以實現&#xff1a; 1. 使用 CSV 或 JSON 數據文件進行數據驅動測試 這是最推…

imx6ull UI開發

imx6ull UI開發簡介在imx6ull上開發UI 應用硬件層面內核驅動顯示設備文件描述符設備樹軟件LVGL用戶空間內核QT在imx6ull上開發UI 應用 在 Linux 系統中&#xff0c;應用程序需要通過操作 RGB LCD 的顯存來實現在屏幕上顯示字符、圖像等信息。由于 Linux 采用嚴格的內存管理機制…

虛擬化測試工具Parasoft Virtualize如何為汽車企業提供仿真測試?

在汽車電子研發中&#xff0c;傳統路測曾是驗證ECU&#xff08;電子控制單元&#xff09;、車載通信、OTA升級等功能的可靠手段。然而&#xff0c;隨著智能駕駛和軟件定義汽車&#xff08;SDV&#xff09;的發展&#xff0c;這種依賴物理車輛的測試方式面臨顯著挑戰&#xff1a…

QT之openGL使用(一)

OpenGL簡介 官網&#xff1a;OpenGL - The Industry Standard for High Performance Graphics 中文官網&#xff1a;主頁 - LearnOpenGL CN OpenGL&#xff08;Open Graphics Library&#xff09;是一種跨語言、跨平臺的圖形編程接口&#xff0c;主要用于渲染二維和三維矢量…

基于生成對抗網絡增強主動學習的超高溫陶瓷硬度優化

復現論文:基于生成對抗網絡增強主動學習的超高溫陶瓷硬度優化 我將使用Python復現這篇關于使用生成對抗網絡(GAN)增強主動學習來優化超高溫陶瓷(UHTC)硬度的研究論文。以下是完整的實現代碼和解釋。 1. 環境準備和數據加載 首先,我們需要準備必要的Python庫并加載數據。 …

hadoop(服務器偽分布式搭建)

1. 報錯 Windows 上寫的腳本 拷貝到 Linux&#xff08;比如 CentOS&#xff09;系統時會出現。 bash: ./set_java_home.sh: /bin/bash^M: bad interpreter: No such file or directory 報錯原因 ^M 是 Windows 的換行符&#xff08;\r\n&#xff09; Linux 使用的是 Unix 格式的…

超詳細 anji-captcha滑塊驗證springboot+uniapp微信小程序前后端組合

目錄 1&#xff1a;pom文件引入jar包 2&#xff1a;配置文件 3&#xff1a;踩坑-1 4&#xff1a;踩坑-2 5&#xff1a;后端二次驗證 6&#xff1a;自定義背景圖 給用戶做的一個小程序&#xff0c;被某局安全驗證后&#xff0c;說登錄太簡單&#xff0c;沒有驗證碼等行為認…

使用AVPlayer播放FairPlay DRM視頻的最佳實踐

01DRM 介紹DRM&#xff0c;即數字版權管理&#xff08;Digital Rights Management&#xff09;&#xff0c;是指使用加密技術保護視頻內容、通過專業技術安全地存儲和傳輸密鑰&#xff08;加密密鑰和解密密鑰&#xff09;、并允許內容生產商設置商業規則&#xff0c;限制內容觀…

《機器學習數學基礎》補充資料:拉格朗日乘子法

瑞士數學家歐拉&#xff08;Leonhard Euler&#xff0c;1707-1783&#xff09;的大名&#xff0c;如雷貫耳——歐拉&#xff0c;是按德文發音翻譯。歐拉不僅是公認的十八世紀最偉大的數學家&#xff0c;還是目前史上最多產的數學家。所著的書籍及論文多達 886 部&#xff08;篇…

【PTA數據結構 | C語言版】二叉堆的樸素建堆操作

本專欄持續輸出數據結構題目集&#xff0c;歡迎訂閱。 文章目錄題目代碼題目 請編寫程序&#xff0c;將 n 個順序存儲的數據用樸素建堆操作調整為最小堆&#xff1b;最后順次輸出堆中元素以檢驗操作的正確性。 輸入格式&#xff1a; 輸入首先給出一個正整數 c&#xff08;≤1…

深入解析PyQt5信號與槽的高級玩法:解鎖GUI開發新姿勢

信號與槽機制是PyQt框架實現組件間通信的核心技術。掌握其高級用法能極大提升開發效率和代碼靈活性。本文將通過六大核心模塊&#xff0c;結合實戰案例&#xff0c;全方位解析信號與槽的進階使用技巧。自定義信號與槽的完全指南 1. 信號定義規范 class CustomWidget(QWidget):#…

gitee某個分支合并到gitlab目標分支

一、克隆Gitee倉庫到本地 git clone https://gitee.com/用戶名/倉庫名.gitcd 倉庫名二、添加 GitLab 倉庫作為遠程倉庫 git remote add gitlab https://gitlab.com/用戶名/倉庫名.git三、查看所有遠程倉庫 git remote -v四、拉取 Gitee 上的目標分支 git fetch origin 分支名五…

PyQt5信號與槽(信號與槽的高級玩法)

信號與槽的高級玩法 高級自定義信號與槽 所謂高級自定義信號與槽&#xff0c;指的是我們可以以自己喜歡的方式定義信號與槽函 數&#xff0c;并傳遞參數。自定義信號的一般流程如下&#xff1a; &#xff08;1&#xff09;定義信號。 &#xff08;2&#xff09;定義槽函數。 &a…

第5天 | openGauss中一個用戶可以訪問多個數據庫

接著昨天繼續學習openGauss,今天是第五天了。今天學習內容是使用一個用戶訪問多個數據庫。 老規矩&#xff0c;先登陸墨天輪為我準備的實訓實驗室 rootmodb:~# su - omm ommmodb:~$ gsql -r創建表空間music_tbs、數據庫musicdb10 、用戶user10 并賦予 sysadmin權限 omm# CREATE…

Vue3 Anime.js超級炫酷的網頁動畫庫詳解

簡介 Anime.js 是一個輕量級的 JavaScript 動畫庫&#xff0c;它提供了簡單而強大的 API 來創建各種復雜的動畫效果。以下是 Anime.js 的主要使用方法和特性&#xff1a; 安裝 npm install animejs 基本用法 <script setup> import { ref, onMounted } from "vu…