PythonIDE Docs
中文
简体中文

console

原生弹窗、HUD 和控制台样式。

控制台与原生弹窗:阻塞式 alert / input_alert、HUD 提示、控制台颜色与链接(Pythonista 兼容 API)。

边界:弹窗 API 阻塞调用线程直到用户操作;在 AppUI 中应放在按钮回调。set_color / clear 作用于脚本控制台输出,不是 SwiftUI 界面样式。

#模块概览

说明
导入import console
适合做什么快速确认、输入一行文字、登录框、HUD 反馈
调用时机弹窗放在按钮回调;勿在 body() 自动弹出
推荐顺序需要输入 → input_alert;仅确认 → alert
取消用户点取消抛 KeyboardInterrupt

#快速开始

python
import console

choice = console.alert("确认", "确定删除这条记录吗?", button1="删除", button2="取消")
if choice == 1:
    print("已确认删除")

name = console.input_alert("输入", "你的名字", input_text="")
console.hud_alert("已保存", icon="checkmark", duration=1.5)

控制台样式:

python
import console

console.set_color(0.2, 0.6, 1.0)
print("蓝色文字")
console.set_color()  # 重置
console.write_link("Python 官网", "https://www.python.org")

#AppUI 示例

弹窗与 HUD 放在按钮回调。

python
import appui
import console

state = appui.State(
    last_input="—",
    last_choice="—",
    status="点击按钮体验",
)


def show_alert():
    try:
        idx = console.alert(
            "确认操作",
            "这是一个原生 alert 示例",
            button1="好的",
            button2="算了",
        )
        state.last_choice = f"按钮 {idx}"
        state.status = "alert 已关闭"
    except KeyboardInterrupt:
        state.status = "用户取消"


def show_input():
    try:
        text = console.input_alert("输入", "说点什么", input_text="Hello")
        state.last_input = text
        state.status = "input 已完成"
        console.hud_alert("收到", duration=1.2)
    except KeyboardInterrupt:
        state.status = "输入已取消"


def body():
    return appui.NavigationStack(
        appui.Form([
            appui.Section("弹窗", [
                appui.Button("显示 Alert", action=show_alert)
                .button_style("bordered_prominent"),
                appui.Button("显示 Input", action=show_input),
            ]),
            appui.Section("结果", [
                appui.LabeledContent("Alert", value=state.last_choice),
                appui.LabeledContent("Input", value=state.last_input),
                appui.Text(state.status).foreground_color("secondaryLabel"),
            ]),
        ]).navigation_title("控制台弹窗")
    )


appui.run(body, state=state)

#API 参考

#速查

API作用
alert(title, message, *, button1='OK', ...)多按钮弹窗 → 1-based 索引
input_alert(title, message, input_text='', ...)带输入框 → str
login_alert(...)用户名+密码 → (user, password)
password_alert(...)密码框 → str
hud_alert(message, icon='', duration=1.5)短暂 HUD 提示
set_color(r, g, b) / set_font(name, size)控制台样式
clear()清空控制台
write_link(title, url)输出可点击链接

#alert

python
idx = console.alert("标题", "正文", button1="确定", button2="取消")
# 1 | 2 | 3;取消抛 KeyboardInterrupt

#input_alert / login_alert / password_alert

python
text = console.input_alert("输入", ok_button_title="完成")
user, pw = console.login_alert("登录")
secret = console.password_alert("密码")

原生能力入口不可用时回退到终端 input()


#常见错误

错误写法后果修正
body()alert每次刷新弹窗放进按钮回调
忽略 KeyboardInterrupt取消时崩溃try/except KeyboardInterrupt
console 做 AppUI 布局API 不匹配appui 组件
主线程长阻塞界面假死弹窗本身会阻塞,避免嵌套多层

#相关文档

文档用途
dialogs另一套原生对话框 API
appui声明式界面

#预期效果

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