QSL4A Toast 与 Dialog——Python 弹窗和对话框 API
导入和初始化
所有 QSL4A API 的使用都从创建一个 Android 实例开始:
from androidhelper import Android
droid = Android()
droid 对象是后续所有 Android API 调用的入口。需要确保相关权限已授予(如弹窗需要悬浮窗权限)。
Toast 短暂提示
Toast 是 Android 上最常用的轻量级提示——屏幕底部弹出一个灰色小条,显示文字,几秒后自动消失。不需要用户操作。
droid.makeToast("任务完成!")
支持短消息,不适合长文本。这是 QSL4A 中最简单也最常用的 API 之一——运行状态更新、调试信息输出都可以用。
AlertDialog 确认对话框
弹出一个带标题、消息内容和「确定」「取消」按钮的对话框,等待用户点击:
result = droid.dialogCreateAlert("确认", "确定要删除吗?")
droid.dialogSetPositiveButtonText("确定")
droid.dialogSetNegativeButtonText("取消")
droid.dialogShow()
response = droid.dialogGetResponse().result
if response.get("which") == "positive":
# 用户点了确定
print("用户确认了")
else:
print("用户取消了")
输入对话框
弹出一个带输入框的对话框,让用户输入文字:
droid.dialogCreateInput("输入标题", "请输入内容", "默认文字")
droid.dialogSetPositiveButtonText("提交")
droid.dialogSetNegativeButtonText("取消")
droid.dialogShow()
response = droid.dialogGetResponse().result
if response.get("which") == "positive":
user_input = response.get("value")
print(f"用户输入了: {user_input}")
选择列表对话框
弹出一个列表,让用户从多个选项中选择:
options = ["选项一", "选项二", "选项三"]
droid.dialogCreateAlert("请选择")
droid.dialogSetItems(options)
droid.dialogShow()
response = droid.dialogGetResponse().result
selected_index = response.get("item")
print(f"用户选了第 {selected_index} 项")
等待用户操作
QSL4A 的对话框 API 很多有阻塞特性——调用 droid.dialogShow() 后脚本会暂停,直到用户点了某个按钮或选项,脚本才继续往下执行。这是个很好的设计——让异步的 Android UI 和同步的 Python 代码自然融合。
如果不希望阻塞(比如脚本后台跑的时候弹窗),可以用 droid.dialogShow() 后脚本继续执行,在需要时再去读 droid.dialogGetResponse() 的结果。
权限需求总结
| API | 需要的权限 |
|---|---|
makeToast | 无特殊权限(QPython App 本身即可弹窗) |
dialogCreateAlert 系列 | 悬浮窗权限(SYSTEM_ALERT_WINDOW) |
如果对话框弹不出来(静默失败),99% 是没给悬浮窗权限。回系统设置 → QPython → 权限 → 悬浮窗,开启即可。
和 Python 传统 UI 的区别
| 特性 | tkinter / PyQt(PC) | QSL4A Dialog |
|---|---|---|
| 运行环境 | 独立 GUI 窗口 | Android 原生对话框(在 QPython App 内) |
| 开发复杂度 | 需要写窗口、布局、事件处理 | 几个 API 调用搞定 |
| 和 Android 融合 | 不融合 | 原生外观、原生行为 |
| 适合场景 | 完整桌面应用 | 脚本运行时的轻量交互 |
小结
Toast 和 Dialog 是 QSL4A 中最常用的 UI API——几行代码就能实现和用户的交互反馈。核心注意点是悬浮窗权限必须授予,否则对话框会静默失败。Toast 最方便,确认对话框和输入对话框适合需要用户做选择的场景。
继续看 传感器访问 了解如何用 Python 读取加速度计、陀螺仪、GPS 等硬件数据。