clipboard
读取、写入和清空系统剪贴板。
读写系统剪贴板:复制、粘贴、清空文本。
边界:适合用户明确的复制/粘贴动作,不是持久化存储。token / 密码请用 keychain;长期保存文本用 storage。剪贴板是系统共享状态,其他 App 可能改写内容。
#模块概览
| 项 | 说明 |
|---|---|
| 导入 | import clipboard |
| 适合做什么 | 复制链接/代码、粘贴用户剪贴内容、分享前准备 |
| 调用时机 | 放在按钮回调;不要在启动时静默 set 覆盖用户剪贴板 |
| 推荐顺序 | 用户点击复制 → set → 更新状态;粘贴时 get 并判空 |
| 兼容别名 | get_text() / set_text() 等同于 get() / set() |
#快速开始
下面脚本写入、读取并清空剪贴板:
已复制
import clipboard
clipboard.set("来自 PythonIDE 的文本")
print("剪贴板:", clipboard.get())
clipboard.clear()
print("清空后:", repr(clipboard.get()))
#AppUI 示例
复制和粘贴都放在按钮回调里,操作后给出可见反馈。
已复制
import appui
import clipboard
state = appui.State(
text="https://www.python.org",
status="等待操作",
preview="—",
)
def update_text(value):
state.text = value
def copy_text():
if not state.text.strip():
state.status = "没有可复制的内容"
return
clipboard.set(state.text)
state.batch_update(
status="已复制到剪贴板",
preview=state.text[:60] + ("…" if len(state.text) > 60 else ""),
)
def paste_text():
value = clipboard.get()
if value:
state.batch_update(
text=value,
status="已从剪贴板粘贴",
preview=value[:60] + ("…" if len(value) > 60 else ""),
)
else:
state.status = "剪贴板为空"
def clear_clipboard():
clipboard.clear()
state.batch_update(status="已清空剪贴板", preview="—")
def body():
return appui.NavigationStack(
appui.Form([
appui.Section("文本", [
appui.TextField("内容", text=state.text, on_change=update_text),
appui.LabeledContent("预览", value=state.preview),
]),
appui.Section("操作", [
appui.Button("复制", action=copy_text)
.button_style("bordered_prominent"),
appui.Button("粘贴", action=paste_text),
appui.Button("清空剪贴板", action=clear_clipboard, role="destructive"),
appui.Text(state.status).foreground_color("secondaryLabel"),
]),
]).navigation_title("剪贴板")
)
appui.run(body, state=state)
#API 参考
#速查
| API | 作用 |
|---|---|
get() | 读取剪贴板文字 → str(空时 "") |
set(text) | 写入字符串 |
clear() | 清空剪贴板 |
get_text() | 兼容别名,同 get() |
set_text(text) | 兼容别名,同 set() |
#读写
get() — 获取当前剪贴板文本,无内容时返回空字符串。
set(text) — 将字符串写入系统剪贴板,会覆盖当前内容。
已复制
import clipboard
clipboard.set("要复制的链接")
value = clipboard.get()
clear() — 清空剪贴板(内部写入空字符串)。
已复制
clipboard.clear()
#Pythonista 兼容别名
| 别名 | 等价于 |
|---|---|
get_text() | get() |
set_text(text) | set(text) |
旧脚本可直接迁移,无需改调用名。
#常见错误
| 错误写法 | 后果 | 修正 |
|---|---|---|
启动时自动 set | 静默覆盖用户剪贴板 | 只在用户点击后写入 |
| 用剪贴板存 token | 易被其他 App 读到 | 使用 keychain |
| 复制后无反馈 | 用户不知道是否成功 | 更新 State 状态文案 |
| 缓存剪贴板旧值 | 其他 App 改写后仍用旧数据 | 每次粘贴重新 get() |
#相关文档
#预期效果
运行示例后,界面应出现文档描述的目标结果;若与预期不符,先看「失败路径」并按返回值或日志排查。