# 包路径
from airscript.ui

界面(UI)

用户交互

通过界面,程序与用户交互

Airscript UI 采用 Html 与Python交互实现

窗口

# 包路径
from airscript.ui import Window

Window(ui,tunnel)

用Window 来构建一个用户交互界面
构造参数类型必须备注
uistring必填html布局路径,请使用 ‘R.res’ 引用资源,也可以传入一个http地址
tunnelpython 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,可以改变窗口的模式
参数类型必须备注
mint可选窗口的模式
m=0 默认,窗口内和窗口外都可以获取点击触摸事件,但窗口外不可以调出键盘
m=1 只有窗口内的点击触摸事件有效
m=2 窗口内的所有点击触摸事件无效,并透传到窗口下
m=3窗口内外都可以点击触摸,但窗口内不可以调起键盘
m = -1 窗口载入进activity中.窗口内长按事件触发为系统原生方式

消息通道

Window(...).tunner(pyfun)

设置消息通道,可以接收到js中传递的消息
参数类型必须备注
pyfunfunction必填必须包含两个形式参数 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)

可更改 窗口的显示宽度
参数类型必须备注
sizenumber 或 string必填当值为number类型时
.width(300) 设置窗口宽度为300px
当值为string类型时
.width("80vw") 设置宽度为屏幕宽度的 80%
.width("80vh") 设置宽度为屏幕高度的 80%

窗口高

Window(...).height(size)

可更改 窗口的显示高度
参数类型必须备注
sizenumber 或 string必填当值为number类型时
.height(300) 设置窗口高度为300px
当值为string类型时
.height("80vw") 设置高度为屏幕宽度的 80%
.width("80vh") 设置高度为屏幕高度的 80%

背景

Window(...).background(color)

设置UI背景色,默认为白色
参数类型必须备注
colorstring必填argb 颜色值
透明:#00000000
白色:#FFFFFF
黑色:#000000

拖拽

Window(...).drag(bol)

UI窗口是否可被用户拖拽,默认为False
参数类型必须备注
bolboolean必填系统默认为False
设置为True 后,在UI顶部出现拖动条,和改变尺寸的按钮

遮罩

Window(...).dimAmount(fol)

设置窗口遮罩层透明度,默认为0.5
参数类型必须备注
folfloat必填数值在 0-1之间
0 :完全没有遮罩,1:完全黑的遮罩,0.5:半透明遮罩,默认为0.5

引力

Window(...).gravity(g)

可更改 窗口的引力方向,随着引力方向的改变. 窗口的位置 属性也会随着引力点改变.
  • 引力方向: 窗口靠左,窗口靠右,还是窗口居中 等.
参数类型必须备注
gnumber必填此值需传入 android.view.Gravity 中的常量值
android.view.Gravity 的常用常量数值备注
LEFT3窗口居左
TOP48窗口居上
RIGHT5窗口居右
BOTTOM80窗口居底
CENTER_HORIZONTAL1水平居中
CENTER_VERTICAL16垂直居中
CENTER17屏幕居中

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的距离是相对于引力而言
参数类型必须备注
nnumber必填距离引力点的横向距离
.x(100)距离 引力点 横向距离100px

窗口纵坐标y

Window(...).y(n)

更改窗口横向坐标x,x的距离是相对于引力而言
参数类型必须备注
nnumber必填距离引力点的纵向距离
.y(100)距离引力点纵向距离100px

显示

Window(...).show()

展现UI,启动一个窗口展示html

关闭

关闭当前Window

Python 中关闭

Window(...).close()

Html javascript 中关闭

window.airscript.close()

数据交互

Python 调用 JavaScript 方法

请确定,在html 加载 javascript 代码中 存在将被调用的函数
# 导包
from airscript.ui import Window 
#构建与展示UI
w = Window(R(__file__).res('/ui/a.html'))
w.show()

# 调用 javascript 中的 函数 fun1 ,并传入参数 "自在老师",2
w.call('fun1("自在老师",2)')

JavaScript 向 Python 传递数据

在html中,使用javascript 方法调用内置jairscript对象
<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)

展示一个吐司提示,用户无需操作,可自动消失
参数类型必须备注
msgstring必填消息提示信息
durnumber可选时间长度,单位毫秒
gravitynumber可选引力值
xnumber可选在屏幕上的x坐标
-1 为屏幕中间
ynumber可选在屏幕上的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)

弹出一个确认框,无取消按钮
参数类型必须备注
msgstring必填消息提示信息
submitstring必填消息提示确认按钮文本,默认为‘确认’
# 导包
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)

参数类型必须备注
msgstring必填消息提示信息
  • 属性方法
方法与参数类型必须备注
.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)

参数类型必须备注
msgstring必填消息提示信息
  • 属性方法
方法与参数类型必须备注
.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模版open in new window

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)
更新日期: 10/30/2023, 9:28:59 AM
Contributors: 自在