PythonIDE Docs
中文
简体中文

share

系统分享面板与 AppUI ShareLink。

系统分享面板:把文本、链接或文件路径交给 iOS 分享表单(AirDrop、备忘录、邮件等)。

边界:无独立 import share Python 模块;通过 AppUI 的 ShareLink 唤起系统 ShareLink / 分享表单。item 需是有意义的字符串(URL、文件路径或分享正文)。复杂导出流水线可结合 file_picker 先拿到路径再分享。

#模块概览

说明
导入import appui
适合做什么分享笔记、导出 CSV/文本、转发链接
调用时机用户点击 ShareLink;内容先在 State 或函数里准备好
推荐顺序生成内容 → 写入 StateShareLink(item=...)
空内容item 为空时分享面板无有效载荷

#快速开始

下面脚本构建一段可分享文本,并用 ShareLink 展示分享按钮:

python
import appui

state = appui.State(note="来自 PythonIDE 的分享示例")


def body():
    return appui.VStack([
        appui.TextEditor(text=state.note),
        appui.ShareLink(
            item=state.note,
            subject="我的笔记",
            message="请查看附件内容",
        ),
    ], spacing=12).padding()


appui.run(body, state=state)

#AppUI 示例

先编辑内容,再点分享;itemState 更新。

python
import appui

state = appui.State(
    title="周报摘要",
    body="本周完成:文档重写、健康模块示例、网络请求演示。",
    status="编辑后点分享",
)


def body():
    share_text = f"{state.title}\n\n{state.body}"
    return appui.NavigationStack(
        appui.Form([
            appui.Section("内容", [
                appui.TextField("标题", text=state.title),
                appui.TextEditor(text=state.body)
                .frame(min_height=120),
            ]),
            appui.Section("分享", [
                appui.ShareLink(
                    item=share_text,
                    subject=state.title,
                    message="分享自 PythonIDE",
                ),
                appui.Text(state.status).foreground_color("secondaryLabel"),
            ], footer="也可把 item 设为 https:// 链接或沙盒内文件路径。"),
        ]).navigation_title("分享")
    )


appui.run(body, state=state)

#API 参考

#速查

参数作用
item分享主体:文本、URL 或文件路径
subject可选主题(部分目标 App 使用)
message可选附言

ShareLink(item='', subject=None, message=None)

python
appui.ShareLink(
    item="https://www.python.org",
    subject="Python",
    message="官方站点",
)

分享本地文件时,item绝对路径字符串(通常来自 FileImporter 或你自己写入沙盒的文件):

python
appui.ShareLink(item="/var/mobile/Containers/Data/.../export.csv")
组件行为
Link直接在 Safari 打开 URL
ShareLink弹出系统分享面板,可选多种目标 App

#动态内容

item 在每次 body() 求值时读取当前 State;编辑后再次点击分享即可获得最新文本。


#常见错误

错误写法后果修正
item=""分享面板空内容生成后再展示 ShareLink
分享未复制进沙盒的外部路径目标 App 读不到文件FileImporter(copy=True) 或自行复制
在回调里手动弹分享无对应 Python APIShareLink 组件
把敏感 token 写进 item泄露到第三方 App只分享用户确认过的内容

#相关文档

文档用途
file_picker导入待分享文件
clipboard复制到剪贴板(不弹分享面板)
mail结构化邮件发送
AppUI 数据参考ShareLink / Link 签名
WebView 分享示例完整导出页面样板

#预期效果

运行示例后,界面应出现文档描述的目标结果;若与预期不符,先看「失败路径」并按返回值或日志排查。