You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

如何在python-pptx中获取Scheme类型ColorFormat对象的RGB值?

获取Scheme类型ColorFormat对象的RGB值

当ColorFormat对象的type为MSO_COLOR_TYPE.SCHEME时,它指向的是幻灯片主题的预设配色方案,并非直接存储RGB值,因此直接调用.rgb会抛出AttributeError。要获取这类颜色的实际RGB值,需要通过主题配色方案关联查询:

  • 第一步:获取当前颜色对应的配色方案索引,通过color.scheme_color属性,它会返回一个MSO_SCHEME_COLOR枚举值(例如MSO_SCHEME_COLOR.ACCENT1)。
  • 第二步:获取目标幻灯片的主题配色方案,使用slide.theme.color_scheme(该属性会自动关联幻灯片实际使用的配色方案,包括自定义版式或修改后的主题)。
  • 第三步:从配色方案中提取对应索引的颜色对象,该对象具备.rgb属性可直接读取值。

代码示例

from pptx import Presentation
from pptx.enum.dml import MSO_COLOR_TYPE, MSO_SCHEME_COLOR

# 加载演示文稿
prs = Presentation("your_file.pptx")
# 定位到目标文本运行对象
target_run = prs.slides[0].shapes[0].text_frame.paragraphs[0].runs[0]
color = target_run.color

if color.type == MSO_COLOR_TYPE.SCHEME:
    # 获取配色方案枚举值
    scheme_enum = color.scheme_color
    # 获取幻灯片的主题配色方案
    color_scheme = prs.slides[0].theme.color_scheme
    # 动态获取对应配色方案中的颜色对象
    scheme_color_obj = getattr(color_scheme, scheme_enum.name.lower())
    # 读取RGB值
    rgb = scheme_color_obj.rgb
    print(f"RGB值: {rgb}")
else:
    # 非Scheme类型直接读取RGB
    rgb = color.rgb
    print(f"RGB值: {rgb}")

说明

color_scheme对象的属性名称与MSO_SCHEME_COLOR枚举值的小写名称一一对应(例如MSO_SCHEME_COLOR.DARK1对应color_scheme.dark1),因此使用getattr可以灵活适配所有配色方案索引。

内容的提问来源于stack exchange,提问作者wonton

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.06.23 17:37:06