关于Aardio开发桌面应用,我有几点补充...转载本文请联系AirPython公众号.一、前言大家好,我是安国!在上一篇文章中,我写到可以通过aardio结合Python来开发桌面应用。有小伙伴在后台给我留言,说Aardio资料太少,希望能增加一些实用的功能|使用aardio配合Python快速开发桌面应用本文将讲讲Aardio的一些更实用和高级的用法2.网络请求在Aardio中,可以使用“inet.http”发送网络请求我们以最简单的GET请求为例这里添加一个按钮,然后在按钮上添加一个点击事件,在事件内部发送网络请求,最后打印出请求结果importwin.ui;importconsole;importinet.http;...//初始化一个GET请求mainForm.get_btn.oncommand=function(id,event){varhttp=inet.http();//这里把查询参数和URL一起写varresult,err,errCode=http.get("http://ip地址/get?username=xag");http.close();if(err){console.log("错误代码:",errCode,"错误信息:",err);}else{console.log(结果);}安慰。暂停()}mainForm.show();returnwin.loopMessage();如果处理的是POST请求,可以使用如下方法:需要指出的是,在创建请求对象http时,可以自定义请求头和请求体参数importwin.ui;importconsole;importinet.http;...//发起POST请求mainForm.post_btn.oncommand=function(id,event){varhttp=inet.http();//添加请求头http.addHeaders={["Content-Type"]='application/json'}//发起请求//请求体:{a=1,b=2}varresult,err,errCode=http.post("http://ip地址/books",{a=1,b=2});http.close();//打印结果if(err){console.log(err);}else{console.log(result);}console.pause()}3.自定义库通过自定义库,我们可以封装一些常用的逻辑,方便代码分层管理,输入“NewLibrary”名称后,会在该文件夹下自动创建一个自定义库,然后,编写业务逻辑自定义库中PS:为了演示方便,我只写了一个简单的方法,然后直接返回一个字符串//自定义库文件:customlib.aardio//自定义库namespacecustomlib{//自定义一个全局方法:custom_funccustom_func=function(){return"xag";}}需要注意的是,为了方便调用自定义方法,我将其定义为全局方法,这里不引用关键字var最后我们在formsource中导入库名code,使用“库名.custommethod()”的格式调用//Formfilemain.aardio//1.导入库名customlibimportcustomlib...//直接调用库中定义的方法并打印结果console.log(customlib.custom_func());....4.简单的线程也在aardio中,我们可以在线程中进行一些耗时的操作。运行步骤如下:首先我们定义一个耗时操作的函数,将其设置为form对象的成员属性为importfonts.fontAwesome;importwin.ui;importconsole;....//线程执行函数mainForm.test_func=function(){importconsole//模拟耗时操作sleep(5000);console.log("test_funcfunctionexecuted")}...然后使用内置的"thread.invoke"上面的函数即可由函数调用。需要注意的是,在thread.invoke函数中,第一个参数是一个匿名函数,后面是为匿名函数指定的参数。我们将表单对象和其他参数传递给匿名函数,然后在函数内部需要使用表单对象来调用上面定义的函数...//点击事件mainForm.calc.oncommand=function(id,event){//调用参数有:函数,参数1,参数2...thread.invoke(function(mainForm,url){mainForm.test_func();...//设置控件可以点击mainForm.calc.disabledText=null;},mainForm,"http://www.baidu.com")}mainForm.show();//消息循环returnwin.loopMessage();5.thread上一节执行Python,我们直接在主线程中调用了Python文件中定义的函数,但是如果是针对一些耗时的函数,体验并不好。这里,我在Python文件中定义了一个简单的耗时函数。importtimedefexec_operation1():print("Start1")time.sleep(5)print("End1")return"success1"接下来我们在窗体源码中给一个按钮设置点击事件,具体步骤调用该函数如下:首先将Python文件放入res文件夹,然后加载文件并释放GIL锁importwin.ui;importconsoleconsole.open()importpy3;...//加载python文件pyCode=string.load("\res\tp.py");//执行pycodepy3.exec(pyCode);//释放GILpy3.releaseThread();...这里需要注意的是,使用"console.open()"打开调试器,可以查看线程中的异常情况然后,在窗体对象上创建一个线程函数,使用下面的方法调用Python文件中的函数//创建一个线程函数1,调用一次-consumingmethodinPythonmainForm.pyThread1=function(mainForm){importpy3;importconsole//注意:console必须在线程中导入才能使用consolepy3.lock(function(){//调用python文件中的函数varresult=tostring(py3.main.exec_operation1())console.log(result)console.log(type(result))})}...最后在按钮的点击事件中,调用上面定义的方法。..mainForm.button.oncommand=function(id,event){//调用上面定义的方法thread.invoke(mainForm.pyThread1,mainForm)}...6.最后很多小伙伴在后台给我留言,说aardio信息太少了。实际上,在aardioeditor软件的“StartPage”中提供了一些官方信息和提示。在编辑器右下角的“Example”中列出了桌面开发常用的开发技巧。其他工具专栏提供了界面处理、代码转换、图标制作、库函数文档等实用工具,有小伙伴提到了原生控件丑陋的问题。这可以使用htmlayout进行自定义和转换。Aardio结合htmlayout提供了更高的自由度。另外可以在工具栏-界面-加配色工具中美化按钮、输入框、选择框
