aardio 编辑GUI界面,调用 python 脚本示例

aardio 中调用 python 的方法有两种,py3 和 process.python 模块
py3 模块:如果经常要拿到python返回的值或从aardio中传数据给python去处理,aardio和python的交互比较多的话,可以考虑使用py3模块,缺点是:py3模块使用起来比较麻烦些,尤其是在异步多线程操作的话,中间需要学习的东西比较绕。
process.python 模块:如果aardio和python的交互不多(比如aardio负责做界面,python负责做爬虫或负责下载文件之类程序),只需后台由python负责完成相关工作的,用process.python来处理是非常方便的,而且使用logRespone可以完整回传Python中print或loggin打印出的信息给aardio的界面控件。 缺点:一般直接指定执行.py脚本,中间不好做交互,参数传递一般在execfile()命令执行时传递给python脚本,然后待脚本执行完成。
 

aardio 编辑GUI界面,调用 python 脚本示例。

编写 main.aardio  如下

import win.ui;
/*DSG{{*/
mainForm = win.form(text="读取PDF目录";right=899;bottom=511)
mainForm.add(
button1={cls="button";text="打开文件";left=627;top=21;right=702;bottom=43;z=2};
button2={cls="button";text="读取PDF目录";left=23;top=63;right=139;bottom=92;z=3};
button3={cls="button";text="读取目录.txt转换为FreeMind文件";left=153;top=62;right=352;bottom=91;z=4};
button4={cls="button";text="读取目录.txt文件转换为.json文件";left=365;top=63;right=563;bottom=91;z=5};
button5={cls="button";text="读取目录.txt转换为jstree模板所需的文件";left=581;top=64;right=815;bottom=91;z=6};
edit1={cls="edit";left=19;top=21;right=601;bottom=44;edge=1;z=1};
edit2={cls="edit";left=14;top=118;right=888;bottom=498;edge=1;multiline=1;readonly=1;vscroll=1;z=7}
)
/*}}*/import io;
import sys;
import fsys.dlg;//aardio调用python
import process.python;
import process.python.pip;
//process.python.pip("install pypdf2==2.12.1");
//process.python.pip("install xmltodict");
//process.python.pip("install jinja2");var f1, f2, tpath, py, txt;
// 打开文件
mainForm.button1.oncommand = function(id,event){mainForm.button1.disabled = true;f1 = fsys.dlg.open("pdf,文本文件|*.pdf;*.txt");if (io.exist(f1)){mainForm.edit1.text = f1;tpath = io.splitpath(f1);if (tpath.ext =='.txt'){txt = string.load(f1);mainForm.edit2.text = txt;}} else {mainForm.msgbox("file not found.");}	mainForm.button1.disabled = false;
}// 读取PDF目录,生成PDF目录.txt
mainForm.button2.oncommand = function(id,event){mainForm.button2.disabled = true;f1 = mainForm.edit1.text;if (io.exist(f1)){tpath = io.splitpath(f1);if (tpath.ext =='.pdf'){py = process.python.execfile("\res\pdf_read_dir.py", f1);py.logResponse(mainForm.edit2)}}sleep(1000);f2 = string.replace(f1,'.pdf','.txt',1);if (io.exist(f2)){mainForm.edit1.text = f2;tpath = io.splitpath(f2);if (tpath.ext =='.txt'){txt = string.load(f2);mainForm.edit2.text = txt;}} else {mainForm.msgbox(f2++" not found.");}mainForm.button2.disabled = false;	
}// 读取目录.txt转换为FreeMind(.mm)文件
mainForm.button3.oncommand = function(id,event){mainForm.button3.disabled = true;f1 = mainForm.edit1.text;if (io.exist(f1)){mainForm.edit1.text = f1;tpath = io.splitpath(f1);if (tpath.ext =='.txt'){py = process.python.execfile("\res\txt_xml_etree_mm.py", f1);py.logResponse(mainForm.edit2)}} else {mainForm.msgbox("file not found.");}mainForm.button3.disabled = false;	
}// 读取目录.txt文件转换为.json文件
mainForm.button4.oncommand = function(id,event){mainForm.button4.disabled = true;f1 = mainForm.edit1.text;if (io.exist(f1)){tpath = io.splitpath(f1);if (tpath.ext =='.txt'){py = process.python.execfile("\res\txt_xml_etree_json.py", f1);py.logResponse(mainForm.edit2)}} else {mainForm.msgbox("file not found.");}f2 = string.replace(f1,'.txt','.json',1);mainForm.edit2.text = f2;mainForm.button4.disabled = false;
}// 读取目录.txt转换为jstree模板所需的html文件
mainForm.button5.oncommand = function(id,event){mainForm.button5.disabled = true;var f1 = mainForm.edit1.text;if (io.exist(f1)){tpath = io.splitpath(f1);if (tpath.ext =='.txt'){py = process.python.execfile("\res\txt_xml_etree_html.py", f1);py.logResponse(mainForm.edit2)}} else {mainForm.msgbox("file not found.");}f2 = string.replace(f1,'.txt','.htm',1);mainForm.edit2.text = f2;mainForm.button5.disabled = false;	
}mainForm.show();
return win.loopMessage();

运行(F5)

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://xiahunao.cn/news/2780502.html

如若内容造成侵权/违法违规/事实不符,请联系瞎胡闹网进行投诉反馈,一经查实,立即删除!

相关文章

java学习07---综合练习

飞机票 1.需求: 机票价格按照淡季旺季、头等舱和经济舱收费、输入机票原价、月份和头等舱或经济舱。 按照如下规则计算机票价格:旺季(5-10月)头等舱9折,经济舱8.5折,淡季(11月到来年4月)头等舱7…

Linux笔记之xhost +和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解

Linux笔记之xhost 和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解 ——2024-02-11 code review! 文章目录 Linux笔记之xhost 和docker的关系以及GDK_SCALE和GDK_DPI_SCALE详解xhost 的作用xhost 与 Docker 的关系 -e GDK_SCALE 和 -e GDK_DPI_SCALE详解GDK_SCALEGDK_DPI_SC…

ClickHouse--03--数据类型

提示:文章写完后,目录可以自动生成,如何生成可参考右边的帮助文档 文章目录 数据类型1. Int2.FloattoFloat32(...) 用来将字符串转换成 Float32 类型的函数toFloat64(...) 用来将字符串转换成 Float64 类型的函数 3.DecimaltoDecimal32(value…

学习Android的第十天

目录 Android CheckBox 复选框 获得选中的 CheckBox 的值 自定义点击效果 改变文字与选择框的相对位置 修改文字与选择框的距离 Android ToggleButton 开关按钮 改变 ToggleButton 的状态和文本 Android Switch 开关 改变 Switch 的状态和文本 Android CheckBox 复选框…

Python 3 中使用 pandas 和 Jupyter Notebook 进行数据分析和可视化

简介 Python 的 pandas 包用于数据操作和分析,旨在让您以直观的方式处理带标签或关联数据。 pandas 包提供了电子表格功能,但由于您正在使用 Python,因此它比传统的图形电子表格程序要快得多且更高效。 在本教程中,我们将介绍如…

深入解析大型数据中心云平台的网络技术与实践

最简单的总结 SDN主流选择了OverLay。虚拟集群的规模(非物理机所能比拟) 使得Vxlan的组播传播( 虚拟机构成的集群包含的 MAC 地址数量往往多一两个数量级 MAC地址表 )对网络设备性能要求巨大(你不可能每个交换机都买核心交换机一样的配置吧)…

ZigBee学习——在官方例程实现组网

✨Z-Stack版本:3.0.2 ✨IAR版本:10.10.1 ✨这篇博客是在善学坊BDB组网实验的基础上进行完善,并指出实现的过程中会出现的各种各样的问题! 善学坊教程地址: ZigBee3.0 BDB组网实验 文章目录 一、基础工程选择二、可能遇…

力扣刷题之旅:高阶篇(一)—— 并查集的应用

力扣(LeetCode)是一个在线编程平台,主要用于帮助程序员提升算法和数据结构方面的能力。以下是一些力扣上的入门题目,以及它们的解题代码。 --点击进入刷题地址 引言 在算法的世界中,并查集是一种非常高效且实用的数…

PySQLRecon:一款功能强大的MSSQL安全测试工具

关于PySQLRecon PySQLRecon是一款功能强大的MSSQL安全测试工具,该工具基于SQLRecon实现其功能,可以帮助广大红队研究人员针对MSSQL执行攻击性安全测试。 环境配置 由于该工具基于Python 3开发,因此我们首先需要在本地设备上安装并配置好Pyt…

微软和苏黎世联邦理工学院开源SliceGPT创新压缩技术节省大量部署资源;OpenAI成立儿童安全团队,防AI误用

🦉 AI新闻 🚀 微软和苏黎世联邦理工学院开源SliceGPT创新压缩技术节省大量部署资源 摘要:微软和苏黎世联邦理工学院研究人员开源了SliceGPT,通过对大模型的权重矩阵进行压缩切片,实现了模型紧缩,节省了部…

Netty应用(六) 之 异步 Channel

目录 12.Netty异步的相关概念 12.1 异步编程的概念 12.2 方式1:主线程阻塞,等待异步线程完成调用,然后主线程发起请求IO 12.3 方式2:主线程注册异步线程,异步线程去回调发起请求IO 12.4 细节注释 12.5 异步的好处…

《UE5_C++多人TPS完整教程》学习笔记10 ——《P11 设置加入游戏会话(Setup for Joining Sessions)》

本文为B站系列教学视频 《UE5_C多人TPS完整教程》 —— 《P11 设置加入游戏会话(Setup for Joining Sessions)》 的学习笔记,该系列教学视频为 Udemy 课程 《Unreal Engine 5 C Multiplayer Shooter》 的中文字幕翻译版,UP主&…

阿里云服务器带宽计费模式是什么?怎么选择?

阿里云服务器带宽计费模式分为“按固定带宽”和“按使用流量”,有什么区别?按固定带宽是指直接购买多少M带宽,比如1M、5M、10M、100M等,阿里云直接分配用户所购买的带宽值,根据带宽大小先付费再使用;按使用…

leetcode(矩阵)74. 搜索二维矩阵(C++详细解释)DAY7

文章目录 1.题目示例提示 2.解答思路3.实现代码结果 4.总结 1.题目 给你一个满足下述两条属性的 m x n 整数矩阵: 每行中的整数从左到右按非严格递增顺序排列。每行的第一个整数大于前一行的最后一个整数。 给你一个整数 target ,如果 target 在矩阵中…

数学实验第三版(主编:李继成 赵小艳)课后练习答案(八)(4)

实验八:近似计算 练习四 1.自己设置一种计算欧拉常数近似值的方法,看你对欧拉常数的计算能精确到小数点后多少位? 从示例7的图8.5我们已经得知,只要求出每个小矩形中在函数y1/x以上的部分的面积之和,我们就可以得知…

【后端高频面试题--SpringBoot篇】

🚀 作者 :“码上有前” 🚀 文章简介 :后端高频面试题 🚀 欢迎小伙伴们 点赞👍、收藏⭐、留言💬 这里写目录标题 1.什么是SpringBoot?它的主要特点是什么?2.列举一些Spri…

【java】11:IDEA常用快捷键+包

1. IDEA 常用快捷键 删除当前行, 默认是 ctrl Y 自己配置 ctrl d复制当前行, 自己配置 ctrl alt 向下光标补全代码 alt /添加注释和取消注释 ctrl / 【第一次是添加注释,第二次是取消注释】导入该行需要的类 先配置 auto import , 然后使用 altenter 即可快速…

【leetcode热题100】子集 II

给你一个整数数组 nums ,其中可能包含重复元素,请你返回该数组所有可能的子集(幂集)。 解集 不能 包含重复的子集。返回的解集中,子集可以按 任意顺序 排列。 示例 1: 输入:nums [1,2,2] 输出…

极狐GitLab 使用阿里云作为 OmniAuth 身份验证 provider

使用阿里云作为 OmniAuth 身份验证 provider 您可以启用阿里云 OAuth 2.0 OmniAuth provider并使用您的阿里云账户登录极狐GitLab。 创建阿里云应用 登录阿里云平台,在上面创建一个应用。阿里云会生成一个 client ID and secret key 供您使用。 登录到阿里云平台…

模型 AARRR(获取、激活、留存、收益、推荐)

系列文章 主要是 分享 思维模型,涉及各个领域,重在提升认知。用户增长五环。 1 模型 AARRR(获取、激活、留存、收益、推荐)的应用 1.1 抖音的AARRR模型应用 抖音是一款非常成功的应用程序,它在用户获取、用户激活、用户留存、收入获取和用户…