PythonIDE Docs
中文
简体中文

widget API 地图

按任务/场景索引 Widget API;含 symbol 链式 color 等易错点。

发布流程见 从脚本到桌面;完整签名见 widget API 参考

任务场景组织 widget 公开 API。需要确认参数名、返回值或修饰符链时,再查 API 参考

边界:本页是索引,不展开教程。入门见 widget 概览;故障见 排错

#本篇目标

说明
用途快速定位「该用哪个 API」
精确签名API 参考
写法示例各专题文档(布局、参数、交互…)
默认 family主屏 medium;其它尺寸见 布局与尺寸

#最小入口

可运行基线脚本见 排错 · 最小健康基线(全系列唯一基线,避免各篇重复)。本页只做 API 路由,不另附 runnable 示例。


#先看哪一类

你要做什么先看专题
从零写第一个小组件Widget()text()render()概览
发布到主屏Studio 发布流程从脚本到桌面
预览里调配色/标题widget.param.*参数面板
桌面按钮/开关widget.statebutton()toggle()状态和交互
small/medium/large 适配widget.contextfamily_value()when()布局与尺寸
数字动画 / 定时刷新timeline()widget.entryflip()时间线和动画
深色/透明/图片/Symbolcontainer_backgroundsymbol()image()资源与外观
预览空白 / 桌面不对基线排查、validate()排错

#按任务选 API

任务首选 API注意
创建根容器Widget(background=, padding=, style=)脚本里只有一个 Widget()
提交渲染w.render()必须在脚本末尾
布局诊断w.validate(family=)Studio「Widget 诊断」对应此报告
流式横/纵排row()column()layer()必须用 with w.row(): 上下文
等列网格grid(columns=)子节点按顺序填格
表格线 / Bingotable(rows, columns) + table.cell()勿用 rect 拼线
点坐标绘制canvas().place()content_width / content_height
标题与数值text()value()title()caption()可变文案加 line_limit + min_scale
SF Symbolsymbol(name).color() .font_size()symbolcolor=/size= 参数
图片 / SVGimage()svg()支持 light/dark 双资源
进度与图表progress()ring_chart()line_chart()bar_chart()small 注意高度预算
可调配置widget.param.text/color/number/slider/bool/choice/file不是桌面 state
桌面状态widget.state.int/bool/list/....increment().toggle().toggle_item()
按钮/开关/链接button()toggle()link()action 必须来自 state 工厂;link(..., icon=) 不可链 .line_limit()
时间线w.timeline(entries=, update=)entry 字段用 widget.entry.*
数据动画.content_transition("numericText").id()flip()非 60fps 循环
系统倒计时countdown()timer_text()原生走时
外观/透明container_background()transparent_background()background_image()染色用 .accentable()
缓存数据cache_json()history()save_image()见 API 参考

#索引

#Family 常量

名称说明
widget.SMALL主屏小(约 158×158 内容区)
widget.MEDIUM主屏中(约 338×158)
widget.LARGE主屏大(约 338×354)
widget.CIRCULAR锁屏圆形 accessory
widget.RECTANGULAR锁屏矩形 accessory
widget.INLINE锁屏行内 accessory

#模块入口

名称说明
widget.context当前 family、width/heightcontent_*is_family()
widget.param预览面板参数声明
widget.state桌面持久状态 + AppIntent 工厂
widget.entry当前 timeline entry 字段
widget.family_value()按 family 返回值
widget.action受控动作助手(高级)
widget.color颜色助手
widget.storage轻量存储

#生命周期(Widget 实例)

方法说明
Widget(...)创建根容器
w.render()输出 IR,结束构建
w.validate(family=)布局/动画诊断报告
w.timeline(...)声明时间线条目与刷新策略
w.background()运行时改根背景
w.container_background()系统容器背景
w.transparent_background()请求透明
w.content_margins()内容边距开关
w.background_image()背景图 + scrim

#布局容器

方法说明
row() / column()横/纵栈(with 块)
layer()叠放
grid()等列网格
table()单路径表格线
canvas()点位坐标画布
when() / unless()按 family 显示/隐藏块
spacer() / divider()间距与分割线

#内容与媒体

方法说明
text() / rich_text()文本
value()数字/状态展示
symbol()SF Symbol(语义图标)
icon()低级图标(一般优先 symbol
image() / svg()位图 / 矢量
badge() / label() / status()组合标签
progress() / ring_chart() / line_chart() / bar_chart()图表
flip()翻页数字块
countdown() / timer_text() / dynamic_date()时间相关

#交互

方法说明
button(action=)AppIntent 按钮
toggle(state=)开关(color=,无 tint=
link(title, url)打开链接

#常用修饰符(链式)

修饰符说明
.line_limit(n) / .min_scale(f)防裁切
.color() / .font_size() / .font_weight()外观(symbol 用链式上色
.id()稳定视图身份
.content_transition() / .animation() / .transition()数据更新动画
.accentable()系统染色参与与否
.privacy_sensitive() / .redacted()锁屏隐私
.monospaced_digit()等宽数字

#工具函数

函数说明
widget.save_image()注册图片供 image/background_image 引用
widget.cache_json()带 TTL 的 JSON 缓存
widget.history()按 bucket 保留历史序列
widget.validate_layout()对 IR 文档做诊断

#选择规则

  1. 信息卡默认 row / column;精确定位再用 table / canvas
  2. 用户调配置widget.param用户点桌面widget.state
  3. 按钮 action 只用 state 工厂,不传 Python 函数或字符串。
  4. 多 familyfamily_value / is_family / when,勿整体缩小 large 布局。
  5. 可变文案 默认 .line_limit(1).min_scale(0.65+)
  6. w.symbol("name") 后链 .color(accent).font_size(18);多色用 rendering="palette", palette=[...]
python
# ❌ symbol 不接受 color=/size=
w.symbol("star.fill", color="#F59E0B", size=18)

# ✅
w.symbol("star.fill").color("#F59E0B").font_size(18)
w.symbol("paintpalette.fill", rendering="palette", palette=["#EF4444", "#3B82F6"])

#专题文档地图

文档覆盖 API
widget 概览总览、快速开始、心智模型
从脚本到桌面render、发布、桌面验证
布局与尺寸row/grid/table/canvascontext
参数面板widget.param
状态和交互widget.statebuttontogglelink
时间线和动画timelineentryflip、动画修饰符
资源与外观背景、图片、SVG、accentable
排错validate、常见 TypeError
API 参考全部公开签名

#示例场景地图

每篇主打不同场景,避免复制粘贴同一套计数器示例:

文档主打示例
概览饮水环形图 ±、每日一言、折线图
从脚本到桌面习惯开关发布验证
参数面板主题天气 choice 换肤
状态和交互连续签到、习惯清单、闹钟开关、链接
布局与尺寸健康仪表盘、快递追踪、播客 when、周历 grid、Bingo table、canvas、锁屏
时间线和动画零钱罐、分时电价、flip 翻页、阶段文案、会议倒计时
资源与外观渐变、accentable、layer、背景图、头像、SVG、步数隐私
排错最小健康基线(唯一 runnable 基线)

#失败路径

现象处理
不知道用哪个 API本文「先看哪一类」→ 专题文档
签名记不清API 参考
TypeError: unexpected keyword排错 对照表(tintsymbol color 等)
示例能预览、桌面异常发布流程 + 缓存重装

相关 API:widget-api-reference.md