aardio_一些踩過的坑


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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM