专业编程基础技术教程

网站首页 > 基础教程 正文

aardio 更新:Python / C# 接口简化,WebView2 支持浏览器扩展

ccvgpt 2025-03-19 10:56:54 基础教程 1 ℃

介绍一下 aardio v35.130 几个重要更新。这只是两天的更新工作量,数十年来 aardio 一直如此,从未懈怠。

一、语法改进

aardio 更新:Python / C# 接口简化,WebView2 支持浏览器扩展

重载 _get,_set 操作符时可通过新增的 ownerCall, ownerAttr 参数适应一些复杂的语法要求,例如对于以下代码通过重载操作符分别作出不同处理:

var a = obj.name;
var a = obj.name();
var a = obj["name"];
obj["name"] = a;
obj.name = a;

细节请参考新版语法文档。

下面说说带来的好处:

例如调用 .NET 组件原来必须写大量的 object.Item["索引"]。在新版本中不用再这样写了,可以像 C# 一样简化为 object["索引"]。注意这个改进是与旧版兼容的,原来的写法不受影响。

再例如调用 Python,Python 中 a.b 与 a["b"] 是语法区分的,aardio 新版对 Python 扩展库进行了大幅重构,可以与 Python 保持一致。

二、Python 扩展库改进

以下 Python 扩展库做了大幅度改进:

py3;
py3.4;
py3.10;
py2;

本次改进大幅简化 aardio + Python 的调用接口。

原来几十句的范例,现在简化到只有 3句:

import py3;
 
//导入 Python 模块
var math = py3.import("math");

//调用 Python 函数
var ret = math.floor(22.3);

原来需要写很多解释去理解什么是 parseValue,为什么要 parseValue,现在不需要了,全部自动转换了。

这也是为什么 aardio 越做越小的原因。

三、web.view 大幅改进

web.view 真是个强大的好东西,免费、强悍、生成的软件体积小。自从有了这个我再也没用过 Electron 。

新版本中,创建 web.view 可以指定更多选项,示例:

var wb = web.view(winform,{
    //启用浏览器扩展,
    extensions = true;
    
    //自定义浏览器界面语言
    language =  "zh-CN"; 
    
    //浏览器启动参数
    startArguments = { 
        proxyServer = "SOCKS5://IP地址:端口,direct://";
        acceptLang = "zh-CN";
    };
    
    //自定义用户数据目录,每个不同的目录都可以创建独立会话。
    userDataDir = userDataDir
    
    //浏览器最低兼容版本
    compatibleBrowserVersion = "86.0.616.0";
})

所有参数都是可选的,可用的浏览器启动参数可参考 Edge 或 Chrome 相关文档。

仍然可以使用旧版的参数写法,也可以这些启动参数。

新版可通过指定下面的选项启用浏览器扩展:

var wb = web.view(winform,{
    //启用浏览器扩展,
    extensions = true;  
})

然后就可以用下面的代码加载浏览器扩展了:

wb.loadExtension("/扩展目录")

web.view 提供了一个更省事的方法,只要导入下面的库:

import chrome.extensions;

wb.loadExtension 就可以在参数里直接写 Edge,Chrome 这些浏览器安装的浏览器扩展 ID(扩展设置里可以看到)。

四、添加 dotNet.ReoGrid 扩展库

ReoGrid 是一个开源、免费、强大的 Excel 表格组件。这是一个 .NET 组件。

其实 aardio 可以直接使用 .NET 组件,看 ReoGrid 文档示例就可以了,C#示例基本可以照搬。这个扩展库我主要是做了一下内存加载 DLL,方便直接生成独立 EXE 文件。

这个库虽然 DLL 有点多,但是体积很小。

下面给个例子:

import win.ui;
var winform = win.form(text="ReoGrid";)

import dotNet.ReoGrid; 

//创建控件
var grid = ReoGrid.ReoGridControl(winform);

//当前工作表
var sheet1 = grid.CurrentWorksheet

//直接显示 aardio 数据
sheet1["B2:D4"] =  { 
    { "测试", "测试2" },
    { "测试3", "测试4" },
};

//直接显示 aardio 数据
sheet1["B3:C5"] =  { { 'a', 'b', 'c' }, { 1, 2, 3 }, { 4, 5, 6 } };

//修改数据
sheet1.SetCellData(5, 2, "hello world");

//高亮
sheet1.AddHighlightRange("B2:D4");

//保存文件
grid.Save("/test.xlsx");

winform.show();
win.loopMessage();

很简单吧。

五、增加复数扩展库 math.complex 。

这个扩展库其实很简单,就是直接调用 C 语言里的 _Complex。

aardio 调用 C 语言接口非常方便,不需要声明 API 就可以直接调用 C 组件函数。而且 C 编译的组件体积很小、速度快、在 aardio 里可以内存加载不用外带 DLL 文件。

下面看个例子:

import console.int;
import math.complex;

var c = math.complex(2, 3);

console.log(c *2) 

也很简单。

最近发表
标签列表