网页窗口
制作用户交互界面
此网页窗口, 使用 WebView 展示 Html页面 ,需要开发者掌握一定 html知识.
开启窗口后,使用 JavaScript 可以和Python语言交互与通信.
方法
创建窗口
创建一个WebUI交互窗口,窗口依赖Html
- 函数
WebWindow(html:str,tunnel=None)
- 参数
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
html | str | 是 | html的路径,可以是html文件.也可以是http地址 |
tunnel | function | 否 | 和javascript交换消息的 通道. 该函数必须包含两个str形参 |
- 示例
from ascript.ios.ui import WebWindow
ui = WebWindow("http://www.ascript.cn")
显示窗口
创建一个WebUI交互窗口,窗口依赖Html
- 函数
WebWindow(...).show()
- 示例
# 显示一个webUI
from ascript.ios.ui import WebWindow
ui = WebWindow("http://www.ascript.cn")
ui.show()
# 显示一个UI ,并创建一个消息通道
from ascript.ios.ui import WebWindow
def tunner(key,value):
print(key,value) # 这里是 javascript 发过来的消息
ui = WebWindow("http://www.ascript.cn",tunner)
ui.show()
关闭窗口
关闭一个正在显示的UI窗口
- 函数
WebWindow(...).close()
- 示例
from ascript.ios.ui import WebWindow
ui = WebWindow("http://www.ascript.cn")
ui.close()
Python 调用 Javascript 函数
- 函数
WebWindow(...).call(jsfun:str)
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
jsfun | str | 是 | js的函数名以及参数 |
- 示例
html代码
<!doctype html>
<html lang="zh-CN">
<head>
<!-- 必须的 meta 标签 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Hello, world!</title>
</head>
<body>
<h1>Hello, world!</h1>
<script>
// 注意这里 创建一个javascript方法, 等待 python 调用
function a(msg){
alert(msg)
}
</script>
</body>
</html>
python 代码
from ascript.ios.ui import WebWindow
from ascript.ios.system import R
def tunner(key,value):
print(key,value)
if key == "__onload__":
print("网页加载完毕,可以调用js方法了")
ui.call('a("调用了js")')
ui = WebWindow(R.ui("a.html"),tunner)
ui.show()
Javascript 方法
我们在JavaScript 中内置了一个 ascript对象.
通过这个对象,可以控制窗口,获取本地缓存数据,以及发送消息给python.
发送消息给Python
我们可以在用户输入信息,并点击确定后发送数据给python
- 函数
ascript.call(key,value)
参数 | 类型 | 是否必填 | 说明 |
---|---|---|---|
key | str | 是 | 传递给python的key,最好唯一.做逻辑判断处理 |
value | str | 是 | 传递给python 数据,如果是js对象,请用 JSON格式化后发送. |
- 示例
html 代码
<!doctype html>
<html lang="zh-CN">
<head>
<!-- 必须的 meta 标签 -->
<meta charset="utf-8">
<meta name="viewport" content="width=device-width, initial-scale=1, shrink-to-fit=no">
<title>Hello, world!</title>
</head>
<body>
<h1>Hello, world!</h1>
<button id="send" onclick="send_to_py()" >发送</button>
<script>
function send_to_py(){
ascript.call("click","我是js发送给python的数据")
}
</script>
</body>
</html>
python 代码
from ascript.ios.ui import WebWindow
from ascript.ios.system import R
def tunner(key,value):
print(key,value)
ui = WebWindow(R.ui("a.html"),tunner)
ui.show()
关闭窗口
在网页中主动关闭窗口
- 函数
ascript.close()
存储数据
和 python的 KeyValue 数据互通
与 ascript.ios.system.KeyValue 存储的数据互通
- 函数
ascript.save("ui","数据123")
获取数据
和 python的 KeyValue 数据互通
与 ascript.ios.system.KeyValue 存储的数据互通
- 函数
ascript.get("ui")