
来源:AirPython
作者:星安果
大家好,我是安果!
上一篇文章写到可以通过 aardio 结合 Python 开发桌面应用,有些小伙伴后台给我留言,说 Aardio 资料太少,希望我能补充一些实用的功能
本篇文章将聊聊 Aardio 一些比较实用的进阶用法
在 Aardio 中,可以使用「 inet.http 」来发送网络请求
我们以最简单的 GET 请求为例
这里添加了一个按钮,然后给这个按钮添加了点击事件,在事件内部发送一个网络请求,最后将请求结果打印出来
import win.ui;
import console;
import inet.http;
...
//发起GET请求
mainForm.get_btn.oncommand = function(id,event){
var http = inet.http();
//这里将查询参数和URL写在一起
var result,err,errCode = http.get("http://ip地址/get?username=xag");
http.close();
if(err){
console.log("错误码:",errCode,"错误信息:",err);
}else{
console.log(result);
}
console.pause()
}
mainForm.show();
return win.loopMessage();
如果是处理 POST 请求,可以采用下面方式:
需要指出的是,创建请求对象 http 时,可以自定义请求头和请求体参数
import win.ui;
import console;
import inet.http;
...
//发起POST请求
mainForm.post_btn.oncommand = function(id,event){
var http = inet.http();
//添加请求头
http.addHeaders = {
["Content-Type"] = 'application/json'
}
//发起请求
//请求体:{a=1,b=2}
var result,err,errCode = http.post("http://ip地址/books"
,{a=1,b=2});
http.close();
//打印结果
if(err){
console.log(err);
}else{
console.log(result);
}
console.pause()
}
通过自定义库,我们可以将一些常用的逻辑进行封装,方便代码分层管理
操作方式如下:
首先,打开项目,在项目根目录下的「 用户库 」鼠标右键,选择「 新建库 」
输入名称后,文件夹下会自动创建一个自定义的库
然后,在自定义库中编写业务逻辑
PS:为了演示方便,我仅仅编写了一个简单的方法,然后直接返回一个字符串
// 自定义库文件:customlib.aardio
//自定义库
namespace customlib{
//自定义一个全局的方法:custom_func
custom_func = function(){
return "xag";
}
}
需要注意的是,为了方便调用自定义的方法,我将它定义为全局方法,此处没有引用关键字 var
最后,我们在窗体源码中导入库名,使用「 库名.自定义方法() 」格式调用即可
//窗体文件main.aardio
//1、导入库名customlib
import customlib
...
//直接调用库中定义的方法,并打印结果
console.log(customlib.custom_func());
....
同样在 aardio 中,我们可以在线程中执行一些耗时的操作
操作步骤如下:
首先,我们将耗时的操作定义了一个函数,设置到窗体对象的成员属性中去
import fonts.fontAwesome;
import win.ui;
import console;
...
//线程执行函数
mainForm.test_func=function(){
import console
//模拟耗时操作
sleep(5000);
console.log("test_func函数执行了")
}
...
然后使用内置的「 thread.invoke 」函数调用上面的函数即可
需要注意的是,thread.invoke 函数中,第一个参数为匿名函数,后面是为匿名函数指定的参数
我们将表单对象和其他参数传递给匿名函数,然后在函数内部中使用表单对象调用上面定义的函数
需要
...
//点击事件
mainForm.calc.oncommand = function(id,event){
//invoke参数分别为:函数、参数1、参数2...
thread.invoke(
function(mainForm,url){
mainForm.test_func();
...
//设置控件可以点击
mainForm.calc.disabledText = null;
},mainForm,"http://www.baidu.com"
)
}
mainForm.show();
//消息循环
return win.loopMessage();
上一节我们是直接在主线程中调用 Python 文件中定义的函数,但是如果针对一些耗时操作的函数就显得体验不好
这里,我在 Python 文件中定义了一个简单的耗时函数
import time
def exec_operation1():
print("开始1")
time.sleep(5)
print("结束1")
return "success1"
下面我们在窗体源码中给一个按钮设置点击事件,调用这个函数
具体步骤如下:
首先,将 Python 文件放置到 res 文件夹,然后加载此文件并释放掉 GIL 锁
import win.ui;
import console
console.open()
import py3;
...
//加载python文件
pyCode = string.load("restp.py");
//执行pycode
py3.exec(pyCode);
//释放GIL
py3.releaseThread();
...
需要注意的是,这里使用 「 console.open() 」打开调试器,可以查看线程中的异常
然后,在窗体对象上创建线程函数,使用下面的方式调用 Python 文件中的函数
//创建一个线程函数1,调用Python中一个耗时方法
mainForm.pyThread1 = function(mainForm)
{
import py3;
import console //注意:线程中必须导入console,才能使用console
py3.lock(
function(){
//调用python文件中的函数
var result = tostring(py3.main.exec_operation1())
console.log(result)
console.log(type(result))
}
)
}
...
最后,在按钮的点击事件中,调用上面定义的方法即可
...
mainForm.button.oncommand = function(id,event)
{
//调用上面定义的方法
thread.invoke(mainForm.pyThread1,mainForm)
}
...
很多小伙伴后台给我留言,说 aardio 资料太少了,其实在 aardio 编辑器软件中的「 起始页 」中提供了一些官方资讯及使用小技巧
编辑器右下角的「 范例 」中,列出了桌面端开发常见的开发技巧,另外工具栏中提供了界面处理、编码转换、图标制作、库函数文档等实用工具
还有一些小伙伴提到原生控件丑陋的问题,这个可以使用 htmlayout 去定制改造,aardio 结合 htmlayout 提供了更高的自由度
另外,在工具栏 - 界面 - Plus 配色工具可以对按钮、输入框、选择框进行美化
数据分析咨询请扫描二维码
若不方便扫码,搜微信号:CDAshujufenxi
解析 loss.backward ():深度学习中梯度汇总与同步的自动触发核心 在深度学习模型训练流程中,loss.backward()是连接 “前向计算 ...
2025-09-02要解答 “画 K-S 图时横轴是等距还是等频” 的问题,需先明确 K-S 图的核心用途(检验样本分布与理论分布的一致性),再结合横轴 ...
2025-09-02CDA 数据分析师:助力企业破解数据需求与数据分析需求难题 在数字化浪潮席卷全球的当下,数据已成为企业核心战略资产。无论是市 ...
2025-09-02Power BI 度量值实战:基于每月收入与税金占比计算累计税金分摊金额 在企业财务分析中,税金分摊是成本核算与利润统计的核心环节 ...
2025-09-01巧用 ALTER TABLE rent ADD INDEX:租房系统数据库性能优化实践 在租房管理系统中,rent表是核心业务表之一,通常存储租赁订单信 ...
2025-09-01CDA 数据分析师:企业数字化转型的核心引擎 —— 从能力落地到价值跃迁 当数字化转型从 “选择题” 变为企业生存的 “必答题”, ...
2025-09-01数据清洗工具全景指南:从入门到进阶的实操路径 在数据驱动决策的链条中,“数据清洗” 是决定后续分析与建模有效性的 “第一道 ...
2025-08-29机器学习中的参数优化:以预测结果为核心的闭环调优路径 在机器学习模型落地中,“参数” 是连接 “数据” 与 “预测结果” 的关 ...
2025-08-29CDA 数据分析与量化策略分析流程:协同落地数据驱动价值 在数据驱动决策的实践中,“流程” 是确保价值落地的核心骨架 ——CDA ...
2025-08-29CDA含金量分析 在数字经济与人工智能深度融合的时代,数据驱动决策已成为企业核心竞争力的关键要素。CDA(Certified Data Analys ...
2025-08-28CDA认证:数据时代的职业通行证 当海通证券的交易大厅里闪烁的屏幕实时跳动着市场数据,当苏州银行的数字金融部连夜部署新的风控 ...
2025-08-28PCU:游戏运营的 “实时晴雨表”—— 从数据监控到运营决策的落地指南 在游戏行业,DAU(日活跃用户)、MAU(月活跃用户)是衡量 ...
2025-08-28Excel 聚类分析:零代码实现数据分群,赋能中小团队业务决策 在数字化转型中,“数据分群” 是企业理解用户、优化运营的核心手段 ...
2025-08-28CDA 数据分析师:数字化时代数据思维的践行者与价值推动者 当数字经济成为全球经济增长的核心引擎,数据已从 “辅助性信息” 跃 ...
2025-08-28ALTER TABLE ADD 多个 INDEX:数据库批量索引优化的高效实践 在数据库运维与性能优化中,索引是提升查询效率的核心手段。当业务 ...
2025-08-27Power BI 去重函数:数据清洗与精准分析的核心工具 在企业数据分析流程中,数据质量直接决定分析结果的可靠性。Power BI 作为主 ...
2025-08-27CDA 数据分析师:数据探索与统计分析的实践与价值 在数字化浪潮席卷各行业的当下,数据已成为企业核心资产,而 CDA(Certif ...
2025-08-27t 检验与 Wilcoxon 检验:数据差异比较的两大统计利器 在数据分析中,“比较差异” 是核心需求之一 —— 如新药疗效是否优于旧药 ...
2025-08-26季节性分解外推法:解锁时间序列预测的规律密码 在商业决策、资源调度、政策制定等领域,准确的预测是规避风险、提升效率的关键 ...
2025-08-26CDA 数据分析师:数据治理驱动下的企业数据价值守护者 在数字经济时代,数据已成为企业核心战略资产,其价值的释放离不开高 ...
2025-08-26