1、關於延時的區別
a.sleep()
mainForm.button.oncommand = function(id,event){
mainForm.edit.print("start");
sleep(5000);
mainForm.edit.print("end");
}
運行效果:點擊按鈕,等待5秒,打印“start”,打印“end”
b.win.delay()
mainForm.button.oncommand = function(id,event){
mainForm.edit.print("start");
win.delay(5000);
mainForm.edit.print("end");
}
運行效果:點擊按鈕,打印“start”,等待5秒,打印“end”
2、多線程調用py
a.先在主線程導入py庫
import py;
b.在主線程釋放GIL
py.releaseThread();
c.在子線程再次導入py庫
import py;
d.在子線程中,調用py的代碼必須放在py.lock()中
py.lock(
function(){
py.appendPath("res\py"); //添加模塊搜索路徑
py.import("test"); //導入模塊
}
)
win.loopMessage(); //在子線程尾部要加上信息循環,不然發布后會崩端
e.在主線程調用py也要寫在py.lock()中
3、關於文件路徑:
1)開發期間:
main.aardio是根目錄 \
1.python第三方庫目錄
假設把第三方庫放在 \lib\py\site-packages\ 文件夾下面
在aardio腳本里添加python腳本的搜索路徑: py.appendPath("\lib\py\site-packages\");
2.python腳本目錄
假設把test.py腳本放在 \res\py\ 文件夾下面
把test2.py腳本放在 \res\py\util\ 文件夾下面
在aardio腳本里添加python腳本的搜索路徑: py.appendPath("\res\py\");
aardio調用python:py.import("test")
Test.py調用Test2.py:from util.test2 import *
2)發布:
把 \lib\py\site-packages\ 和 \res\py\ 整個文件夾復制一份,放在發布目錄下,注意文件夾層級關系
4、aardio和python之間的數據通信
1.aardio獲取python的數據:
導入python包之后,aardio可以直接讀取包內的數字/字符串/字典/列表/元組
也可以調用python的函數,通過函數返回數字/字符串/字典/列表/元組
但是拿到的都是py.object
2.數據轉換:
數字/字符串:
需要在aardio調用tonumber(pyObject)/tostring(pyObject)來轉換為aardio的數字/字符串
字典:
從python獲取到的字典其實就是aardio的py.dict,可以直接當作py.dict來操作
pyObject.each() 可以遍歷字典
pyObject.getItem("key")可以獲取字典內的值
更多py.dict的方法可以查看aardio中的py庫源文件