# 包路径
from airscript.ui
界面(UI)
用户交互
通过界面,程序与用户交互
Airscript UI 采用 Html 与Python交互实现
窗口
# 包路径
from airscript.ui import Window
Window(ui,tunnel)
用Window 来构建一个用户交互界面构造参数 | 类型 | 必须 | 备注 |
---|---|---|---|
ui | string | 必填 | html布局路径,请使用 ‘R.res’ 引用资源,也可以传入一个http地址 |
tunnel | python function(k,v) | 可选 | html 向 python 传递参数的通道 该函数需存在两个形式参数 key,value html会传递键值对参数过来 |
#导包
from airscript.ui import Window
def tunnel(k,v):
print(k)
print(v)
# 构建一个window 显示‘/ui/a.html’ 通信通道为tunnel 函数
w = Window(R(__file__).ui('a.html'),tunnel)
模式
Window(...).model(m)
通过配置model,可以改变窗口的模式参数 | 类型 | 必须 | 备注 |
---|---|---|---|
m | int | 可选 | 窗口的模式 m=0 默认,窗口内和窗口外都可以获取点击触摸事件,但窗口外不可以调出键盘 m=1 只有窗口内的点击触摸事件有效 m=2 窗口内的所有点击触摸事件无效,并透传到窗口下 m=3窗口内外都可以点击触摸,但窗口内不可以调起键盘 m = -1 窗口载入进activity中.窗口内长按事件触发为系统原生方式 |
消息通道
Window(...).tunner(pyfun)
设置消息通道,可以接收到js中传递的消息参数 | 类型 | 必须 | 备注 |
---|---|---|---|
pyfun | function | 必填 | 必须包含两个形式参数 k,v |
from airscript.ui import Window
from airscript.system import R
def tunner(k,v):
print(k,v)
w = Window(R(__file__).ui("loger.html"))
w.tunner(tunner) # 在这里设置消息通道
w.show()
尺寸
窗口宽
Window(...).width(size)
可更改 窗口的显示宽度参数 | 类型 | 必须 | 备注 |
---|---|---|---|
size | number 或 string | 必填 | 当值为number类型时 .width(300) 设置窗口宽度为300px 当值为string类型时 .width("80vw") 设置宽度为屏幕宽度的 80% .width("80vh") 设置宽度为屏幕高度的 80% |
窗口高
Window(...).height(size)
可更改 窗口的显示高度参数 | 类型 | 必须 | 备注 |
---|---|---|---|
size | number 或 string | 必填 | 当值为number类型时 .height(300) 设置窗口高度为300px 当值为string类型时 .height("80vw") 设置高度为屏幕宽度的 80% .width("80vh") 设置高度为屏幕高度的 80% |
背景
Window(...).background(color)
设置UI背景色,默认为白色参数 | 类型 | 必须 | 备注 |
---|---|---|---|
color | string | 必填 | argb 颜色值 透明:#00000000 白色:#FFFFFF 黑色:#000000 |
拖拽
Window(...).drag(bol)
UI窗口是否可被用户拖拽,默认为False参数 | 类型 | 必须 | 备注 |
---|---|---|---|
bol | boolean | 必填 | 系统默认为False 设置为True 后,在UI顶部出现拖动条,和改变尺寸的按钮 |
遮罩
Window(...).dimAmount(fol)
设置窗口遮罩层透明度,默认为0.5参数 | 类型 | 必须 | 备注 |
---|---|---|---|
fol | float | 必填 | 数值在 0-1之间 0 :完全没有遮罩,1:完全黑的遮罩,0.5:半透明遮罩,默认为0.5 |
引力
Window(...).gravity(g)
可更改 窗口的引力方向,随着引力方向的改变. 窗口的位置 属性也会随着引力点改变.- 引力方向: 窗口靠左,窗口靠右,还是窗口居中 等.
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
g | number | 必填 | 此值需传入 android.view.Gravity 中的常量值 |
android.view.Gravity 的常用常量 | 数值 | 备注 |
---|---|---|
LEFT | 3 | 窗口居左 |
TOP | 48 | 窗口居上 |
RIGHT | 5 | 窗口居右 |
BOTTOM | 80 | 窗口居底 |
CENTER_HORIZONTAL | 1 | 水平居中 |
CENTER_VERTICAL | 16 | 垂直居中 |
CENTER | 17 | 屏幕居中 |
Android 类的常量使用
可以 通过python 引入使用 from android.view import Gravity
也可以 直接填入常量数值使用
- 窗口的组合引力 应该使用 ‘|’ 连接多个引力值
# 引力的组合写法
# 右上角
Window(...).gravity(48|5)
# 右下角
Window(...).gravity(80|5)
#左上角
Window(...).gravity(48|3)
#左下角
Window(...).gravity(80|3)
#左垂直居中
Window(...).gravity(3|16)
#右垂直居中
Window(...).gravity(5|16)
#上横向居中
Window(...).gravity(48|1)
#下横向居中
Window(...).gravity(80|1)
位置
窗口横坐标x
Window(...).x(n)
更改窗口横向坐标x,x的距离是相对于引力而言参数 | 类型 | 必须 | 备注 |
---|---|---|---|
n | number | 必填 | 距离引力点的横向距离 .x(100)距离 引力点 横向距离100px |
窗口纵坐标y
Window(...).y(n)
更改窗口横向坐标x,x的距离是相对于引力而言参数 | 类型 | 必须 | 备注 |
---|---|---|---|
n | number | 必填 | 距离引力点的纵向距离 .y(100)距离引力点纵向距离100px |
显示
Window(...).show()
展现UI,启动一个窗口展示html关闭当前Window 关闭
Python 中关闭
Window(...).close()
Html javascript 中关闭
window.airscript.close()
数据交互
请确定,在html 加载 javascript 代码中 存在将被调用的函数 Python 调用 JavaScript 方法
# 导包
from airscript.ui import Window
#构建与展示UI
w = Window(R(__file__).res('/ui/a.html'))
w.show()
# 调用 javascript 中的 函数 fun1 ,并传入参数 "自在老师",2
w.call('fun1("自在老师",2)')
在html中,使用javascript 方法调用内置jairscript对象 JavaScript 向 Python 传递数据
<script>
//这里的 key,value 用户填入自定义的值 ,在 python 的Window 构造参数 tunnel 中会回调
window.airscript.call('key',"value")
</script>
JavaScript 中的快捷方法
方法 | 备注 |
---|---|
airscript.close() | 关闭当前窗口 |
airscript.get("key") | 获取 Python 中Kv 存储的数据,仅支持string数据 |
airscript.save("key","value") | 快速存储数据到本地,和Python Kv函数数据互通,仅支持string数据 |
<script>
//在JS 中直接关闭当前窗口
window.airscript.close()
</script>
<script>
//在JS 中获取 Python代码中 Kv 存储的值
var value = window.airscript.get("key")
</script>
<script>
//在JS 调用 save 将数据存储在本地 只支持存储string 类型的值.
window.airscript.save("key","value")
</script>
弹窗
吐司
toast(msg,dur,x,y)
展示一个吐司提示,用户无需操作,可自动消失参数 | 类型 | 必须 | 备注 |
---|---|---|---|
msg | string | 必填 | 消息提示信息 |
dur | number | 可选 | 时间长度,单位毫秒 |
gravity | number | 可选 | 引力值 |
x | number | 可选 | 在屏幕上的x坐标 -1 为屏幕中间 |
y | number | 可选 | 在屏幕上的y坐标 -1 为屏幕中间 |
# 导包
from airscript.ui.dialog import toast
# 展示一个简单吐司提示,3秒后消失,位置偏屏幕中心点 y坐标+20%屏幕高度
toast('我认识自在老师')
# 展示一个简单吐司提示,5秒后消失,位置偏屏幕中心点 y坐标+20%屏幕高度
toast('我认识自在老师',5000)
# 展示一个简单吐司提示,3秒后消失,位置偏屏幕中心点 x+100px,y+200px
toast('我认识自在老师',3000,100,200)
# 展示一个简单吐司提示,3秒后消失,位置偏屏幕中心点 y坐标-20%屏幕高度
toast('我认识自在老师',3000,0,-0.2)
# 展示一个简单吐司提示,3秒后消失,位置偏屏幕中心点 y坐标+20%屏幕高度
toast('我认识自在老师',3000,0,0.2)
# 展示一个简单吐司提示,3秒后消失,位置偏屏幕中心点 x坐标+20%屏幕宽度
toast('我认识自在老师',3000,0.2,0)
# 展示一个简单吐司提示,3秒后消失,位置为屏幕左上角位置
toast('我认识自在老师',3000,3|48,0,0)
消息提示
# 导包
from airscript.ui.dialog import alert
alert(msg,submit)
弹出一个确认框,无取消按钮参数 | 类型 | 必须 | 备注 |
---|---|---|---|
msg | string | 必填 | 消息提示信息 |
submit | string | 必填 | 消息提示确认按钮文本,默认为‘确认’ |
# 导包
from airscript.ui.dialog import alert
# 案例1: 弹出一个信息提示框
alert('您好,我是你们的API导师,自在老师.')
# 导包
from airscript.ui.dialog import alert
# 案例2: 弹出一个信息提示框,并更改确认按钮为知道了
alert('您好,我是你们的API导师,自在老师.','知道了')
消息确认
# 导包
from airscript.ui.dialog import confirm
- 创建一个消息确认对话框
confirm(msg)
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
msg | string | 必填 | 消息提示信息 |
- 属性方法
方法与参数 | 类型 | 必须 | 备注 |
---|---|---|---|
.title(msg) | string | 必填 | 设置标题 |
.submit(msg) | string | 必填 | 设置确认按钮值 |
.cancle(msg) | string | 必填 | 设置取消按钮值 |
.close() | 关闭弹窗 | ||
.show(pyfun) | python 函数,需要两个形参 | 必填 | UI数据回调函数, 格式如: 'comfirm - 回调函数格式' 点击确认按钮后 k = "__confirm",v = "sure" 点击取消按钮后 k = "__confirm",v = "cancle" |
# comfirm - 回调函数格式
def tunner(k,v):
if(k=="__confirm"):
if v = "sure":
print('点击了确认')
else:
print('点击了取消')
# 导包
from airscript.ui.dialog import confirm
# 案例1: 弹出一个确认框
def tunner(k,v):
if(k=="__confirm"):
if v == "sure":
print('点击了确认')
else:
print('点击了取消')
dialog = confirm('您确定要学习Airscript吗?').show(tunner)
# 导包
from airscript.ui.dialog import confirm
# 案例2: 弹出一个确认框,并指定标题
def tunner(k,v):
if(k=="__confirm"):
if v == "sure":
print('点击了确认')
else:
print('点击了取消')
dialog = confirm('您确定要学习Airscript吗?').title("学习提示").show(tunner)
# 导包
from airscript.ui.dialog import confirm
# 案例3: 弹出一个确认框,并指定标题,确认按钮 和取消按钮文本
def tunner(k,v):
if(k=="__confirm"):
if v == "sure":
print('点击了确认')
else:
print('点击了取消')
dialog = confirm('您确定要学习Airscript吗?')
dialog.title("学习提示")
dialog.submit("我要学习")
dialog.cancle("不想学")
dialog.show(tunner)
文本输入
# 导包
from airscript.ui.dialog import promat
- 创建文本输入框
promat(msg)
参数 | 类型 | 必须 | 备注 |
---|---|---|---|
msg | string | 必填 | 消息提示信息 |
- 属性方法
方法与参数 | 类型 | 必须 | 备注 |
---|---|---|---|
.title(msg) | string | 必填 | 设置标题 |
.value(msg) | string | 必填 | 设置默认文本 |
.hint(msg) | string | 必填 | 设置输入框中的默认提示 |
.submit(msg) | string | 必填 | 设置确认按钮值 |
.cancle(msg) | string | 必填 | 设置取消按钮值 |
.close() | 关闭弹窗 | ||
.show(pyfunction) | python 函数,需要两个形参 | 必填 | UI数据回调函数, 格式如: 'promat - 回调函数案例' 点击确认按钮后 k = "__promat",v = 用户输入的内容 点击取消按钮后 k = "__promat",v = "cancle" |
# promat - 回调函数格式
def tunner(k,v):
if(k=="__promat"):
if v == "cancle":
print('点击了取消')
else:
print('点击了确认:输入值为:',v)
# 导包
from airscript.ui.dialog import promat
# 案例: 弹出一个文本输入框
def tunner(k,v):
if(k=="__promat"):
if v == "cancle":
print('点击了取消')
else:
print('点击了确认:输入值为:',v)
dialog = promat('您确定要学习Airscript吗?').show(tunner)
# 导包
from airscript.ui.dialog import promat
# 案例2: 弹出一个文本框,设置详细属性
def tunner(k,v):
if(k=="__promat"):
if v == "cancle":
print('点击了取消')
else:
print('点击了确认:输入值为:',v)
dialog = promat('您确定要学习Airscript吗?')
dialog.value("文本内容预设值")
dialog.hint("这是默认提示")
dialog.title("标题文本")
dialog.submit("提交")
dialog.cancle("再见")
dialog.show(tunner)
日志窗口
# 包路径
from airscript.ui.dialog import loger
- 日志窗口
loger().show()
from airscript.ui.dialog import loger
# loger 继承与 Window 因此,我们可以使用 Window中任何方法
log = loger()
log.show()
# log.close()
自定义日志窗口
自定义日志窗口需要下载UI模版
from airscript.ui.dialog import loger
def tunner(k,v):
print(k,v)
# loger 继承 Window ,因此 Window 中的方法,loger都可以使用
lw = loger(R(__file__).ui("loger.html"))
lw.tunner(tunner) # 设置消息通道
lw.show() # 展示
悬浮窗
# 包路径
from airscript.ui import Float
隐藏
# 导包
from airscript.ui import Float
# 隐藏悬浮窗
Float.hide()
展示
# 导包
from airscript.ui import Float
# 显示悬浮窗
Float.show()
位置与透明度
# 导包
from airscript.ui import Float
# 显示悬浮窗,并设置位置为100,100
Float.show(100,100)
# 显示悬浮窗,并设置位置为 20%宽度,40%高度
Float.show(0.2,0.4)
# 显示悬浮窗,透明度设置为30%,并设置位置为100,100
Float.show(0.3,100,100)