aardio踩过的坑

admin2020-12-08  412

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库源文件

转载请注明原文地址: https://seopai.com/read-24.html
最新回复(0)
aardio问答
aardio编程语言