📌 什么是 Python 弹窗?
Python 弹窗功能允许你在 Gandi 文件编辑器中编写 Python 脚本来定义弹窗界面。扩展会自动解析脚本中的 print()、input()、BetterPopup.select() 等语句,将其转换为对应的弹窗 UI 元素。
弹窗关闭后,所有用户输入的数据以 JSON 对象 形式返回,键名为 Python 中的变量名。
Python 弹窗不需要真正执行 Python 代码——它只是解析语法结构来生成界面,因此无需 Python 运行环境。
🚀 快速开始
- 1 在 Gandi 文件编辑器中新建文件,命名为
form.py - 2 编写 Python 弹窗代码(见下方示例)
- 3 在 Scratch 中使用积木 「用Python文件 [form.py] 生成弹窗并返回」
- 4 积木返回 JSON 字符串,包含用户输入的所有数据
📝 基础示例
一个简单的用户信息收集表单:
form.py
import BetterPopup
# 显示欢迎文字
print("请填写用户信息")
# 文本输入框
name = input("请输入姓名")
# 数字输入框
age = BetterPopup.input2("请输入年龄", int)
# 下拉选择
gender = BetterPopup.select("男", "女")
返回结果:
JSON
{
"name": "张三",
"age": 25,
"gender": "男"
}
🎯 完整示例
展示所有 API 的完整弹窗:
full-demo.py
import BetterPopup
# ===== 显示文字 =====
print("欢迎使用完整演示!")
print("请完成以下表单:")
# ===== 文本输入框 =====
username = input("请输入用户名")
address = input("请输入地址")
# ===== 指定类型的输入框 =====
age = BetterPopup.input2("请输入年龄", int)
score = BetterPopup.input2("请输入分数", float)
pwd = BetterPopup.input2("设置密码", password)
# ===== 下拉选择器 =====
city = BetterPopup.select("北京", "上海", "广州", "深圳")
role = BetterPopup.select("学生", "教师", "管理员")
# ===== 文件导入 =====
avatar = BetterPopup.importFile()
# ===== 自定义 HTML 元素 =====
volume = BetterPopup.custom('<input type="range" min="0" max="100" value="50">')
返回结果:
JSON
{
"username": "zhangsan",
"address": "北京市朝阳区",
"age": 25,
"score": 98.5,
"pwd": "abc123",
"city": "北京",
"role": "学生",
"avatar": "data:image/png;base64,...",
"volume": 50
}
📖 API 参考
| Python 语句 | 弹窗元素 | 返回值类型 |
|---|---|---|
print("文字") |
弹窗显示文字 | —(不返回值) |
id = input("提示") |
文本输入框 | 字符串 |
id = BetterPopup.input2("提示", int) |
整数输入框 | 数字 |
id = BetterPopup.input2("提示", float) |
小数输入框 | 数字 |
id = BetterPopup.input2("提示", password) |
密码输入框 | 字符串 |
id = BetterPopup.input2("提示", email) |
邮箱输入框 | 字符串 |
id = BetterPopup.input2("提示", url) |
网址输入框 | 字符串 |
id = BetterPopup.select("A", "B", "C") |
下拉选择器 | 选中的值(字符串) |
id = BetterPopup.importFile() |
文件导入 | 文件内容(字符串) |
id = BetterPopup.custom('html') |
自定义 HTML 元素 | 元素值 |
🔤 input2 支持的类型
| Python 类型 | 弹窗输入类型 | 说明 |
|---|---|---|
int | 整数输入框 | 只接受整数,返回数字类型 |
float | 小数输入框 | 接受小数,返回数字类型 |
str / string | 文本输入框 | 普通文本,返回字符串 |
password | 密码输入框 | 输入内容被遮挡,返回字符串 |
email | 邮箱输入框 | 邮箱格式提示,返回字符串 |
url | 网址输入框 | URL 格式提示,返回字符串 |
🔄 Python vs Popup 文件
两种弹窗定义方式各有优势,可根据场景选择:
🐍 Python 文件
- 语法简洁,类似 Python 代码
- 变量名即为返回值的键名
- 适合熟悉 Python 的用户
- 代码更紧凑
name = input("姓名")
age = BetterPopup.input2("年龄", int)
📄 Popup 文件
- 类 HTML 标签语法
- 支持更多元素类型(滑杆、颜色等)
- 适合熟悉 HTML 的用户
- 结构更直观
<input id="name" placeholder="姓名">
<input id="age" type="number">
🧩 在 Scratch 中使用
使用积木 「用Python文件 [FILE] 生成弹窗并返回」:
📁 文件选择
下拉菜单自动列出 Gandi 文件编辑器中所有 .py 文件,也可手动输入文件名。
📦 返回值
弹窗关闭后返回 JSON 字符串,键名为 Python 中赋值的变量名,值为用户输入。
🔗 数据解析
配合 JavaScript 工具箱等扩展解析 JSON,获取各字段值进行后续处理。
每个赋值语句的变量名(如
name、age)会作为 JSON 的键名,请确保变量名唯一且不重复。💬 注释语法
Python 弹窗文件使用标准 Python 注释,注释行不会被解析:
注释示例
# 这是注释,不会被解析
print("标题")
# name = input("被注释掉的代码不会生效")