PythonIDE Docs
中文
简体中文

widget 从脚本到桌面

Widget Studio 预览、发布、系统添加主屏小组件与桌面验证。

API 地图见 widget-api-index.md;完整签名见 widget-api-reference.md

从第一行 Python 脚本到主屏/锁屏真正显示:写脚本 → 预览 → 调参 → 发布 → 系统添加小组件。

边界:本篇讲发布流程。API 与节点写法见 widget 概览;文档里的 previewWidget 只能预览,不能直接发布到桌面。

#本篇目标

说明
读完你会完成一次端到端发布,并在桌面验证按钮交互
前提脚本含 Widget() + w.render(),且能正常预览
推荐路径Widget Studio 独立项目(最省事)
耗时首次约 5–10 分钟(含系统添加小组件)

#发布用脚本(可预览)

本篇示例专注发布验证:一个开关 + 状态文案,便于在桌面确认 AppIntent 是否生效。完整 API 写法(环形图、± 按钮等)见 widget 概览 · 饮水打卡

预期效果:小组件预览面板显示与脚本一致的布局与交互。

python
import widget

habit = widget.param.text("习惯名", "每日阅读")
done = widget.state.bool("done", False)
accent = widget.param.color("主色", "#7C3AED")

w = widget.Widget(background=("#FAF5FF", "#1E1B4B"), padding=14)
w.text(habit, size=16, weight="semibold").line_limit(1).min_scale(0.72)
w.toggle("今日完成", state=done, color=accent, style="switch")
status = "已完成,发布验证通过" if done else "桌面点开关以验证"
w.text(status, size=12, color=accent if done else "secondary").line_limit(1).min_scale(0.72)
w.render()

预期效果

  • medium:习惯名、开关、状态说明
  • 桌面点开关后文案变为「已完成…」即表示 widget.state 与发布链路正常

#三条入口,别搞混

入口能预览能发布到桌面适用
文档 previewWidget学 API、看效果
Widget Studio日常开发发布(推荐)
MiniApp Widget 工程工程内多文件 widget 目录

文档示例要上线:把代码复制到 Studio 新建脚本,或放进自己的 Widget 工程后再发布。


#发布流程(Widget Studio)

#1. 准备脚本

  • 只创建一个 w = widget.Widget(...)
  • 末尾调用 w.render()
  • 交互按钮使用 widget.statecount.increment() 等 action

#2. 创建或打开项目

  1. 打开 App 内 Widget Studio(小组件工作区)
  2. 新建独立小组件项目,或打开已有脚本对应的项目
  3. 将上例代码保存为项目的 Python 脚本

#3. 运行预览

  1. 在项目卡片上点 运行(或等价入口)
  2. 进入全屏/Sheet 小组件预览
  3. 右上角切换 small / medium / large,确认无文字裁切
  4. 在预览侧栏调整 widget.param(习惯名、主色等)

预览成功时,Studio 会生成草稿快照;满足条件时会自动发布到 App 的 Widget 扩展缓存(状态栏常见提示:「已生成并发布 N 个尺寸」或「Widget 已更新,可在桌面选择」)。

#4. 添加到 iOS 主屏幕

发布只代表 App 内已有可渲染快照;还要在系统里添加一次小组件

  1. 回到 iPhone 主屏幕(或锁屏编辑界面)
  2. 长按空白处 → 编辑主屏幕 → 点左上角 +
  3. 搜索并选择 Python IDE(或你的 App 显示名)
  4. 选择尺寸(小/中/大或锁屏 accessory)
  5. 若出现多个槽位/项目,选与 Studio 同名 的项目
  6. 添加小组件

锁屏 accessory(圆形/矩形/行内)需在锁屏编辑界面单独添加,布局要更精简(见 布局与尺寸)。

#5. 桌面验证交互

  1. 在主屏小组件上点 「今日完成」 开关
  2. 状态文案应变为「已完成,发布验证通过」
  3. 若不变:回到 Studio 重新运行发布,或删除桌面小组件后重新添加

#MiniApp Widget 工程(简表)

若 widget 脚本在 MiniApp 的 widgets/ 目录下:

  1. 在 MiniApp 编辑器打开 widget 脚本
  2. 运行 Widget 预览(工具栏/运行菜单)
  3. 构建成功且可发布时,同样会提示 「Widget 已更新,可在桌面选择」
  4. 按上一节 §4 在系统里添加或刷新小组件

多 widget _manifest、槽位与工程结构见 MiniApp 内说明;本篇不展开工程细节。


#发布前检查

检查项合格标准
入口仅一个 Widget(),最后 w.render()
预览Studio/文档预览非空白,无构建错误日志
文本可变文案有 .line_limit(1).min_scale(0.65+)
尺寸small 只保留核心信息;medium 为默认主力
参数widget.param.* 在 UI 构建之前声明
状态按钮 action=count.increment();开关 w.toggle(..., state=done)
外观浅色/深色模式下对比度可读
发布Studio 出现「已发布」类成功提示
桌面系统已添加小组件,且选中正确项目/槽位

#常见错误

错误后果修正
只在文档里预览就认为已上桌面主屏没有组件必须走 Studio 发布 + 系统添加
预览成功但未在系统里添加小组件桌面看不到长按主屏幕 → + → 选 App
选了错误的 Studio 项目槽位显示别的 widget添加时核对项目名称
改了 widget.state 的 key点击计数错乱重新发布;删桌面组件重装
改了布局/参数默认值桌面仍旧版重新运行发布;必要时删组件重装
small 塞满 large 内容裁切、难读widget.context.is_family("small") 分支
action 写死字符串点击无效widget.state 生成 action

#失败路径

现象处理
预览空白w.render();勿混用 appui/scene → 排错
发布失败 / 无成功提示看预览控制台日志;修脚本后重新运行
参数面板为空widget.param 须在 render() 前声明 → 参数面板
桌面不刷新重新运行发布;删主屏小组件 → 重新添加
预览正常、桌面异常确认已发布且选对口槽位;查 排错
点击无反应action 必须来自 widget.state状态和交互

#改脚本后要不要重新发布?

变更类型建议
改颜色默认值、文案重新运行发布;参数可在预览里覆盖
widget.state key必须重新发布;建议删桌面组件重装
改布局结构 / 新增 family重新运行发布,逐尺寸检查
仅改注释可不发布(桌面无变化)

#相关文档

文档用途
widget 概览API、示例、心智模型
参数面板widget.param 详解
状态和交互按钮、开关、链接
布局与尺寸small/medium/large、锁屏 accessory
排错预览/桌面不一致
API 索引按任务选 API

相关 API:widget-api-reference.md