利用aardio为Python程序打造图形界面
本文介绍如何使用aardio为Python脚本编写图形用户界面。通过aardio调用Python函数,实现无需重新编译即可动态修改逻辑的开发模式。示例展示了基于aardio构建加法计算器界面,并调用Python后端进行计算,兼顾开发效率与界面美观。
此前在编写Python小程序时,我意识到控制台输出界面过于简陋,难以满足日常使用需求,因此开始探索如何为Python程序添加图形用户界面。
经过搜索,我发现Python的图形界面库众多且繁杂。尝试下载了几个具有特色的库并制作演示后,仍感到不满意:要么安装配置繁琐,要么界面美观度不足,亦或是开发难度大、文档不完善。
偶然整理电脑文件时,我发现了六年前下载的aatuo软件(现已更名为aardio),这带来了意外的惊喜。
回顾aardio的历史,2011年7月它还名为aauto。当时我热衷于开发桌面应用,尝试过VC++(MFC)、C#(Winform)、Java(Swing)和Delphi等多种技术。偶然在网上找到aauto并试用后,其IDE“免安装”的特性和友好的用户体验令人印象深刻,且最终生成的EXE文件体积小巧,非常适合开发小型工具或应用。此后,aauto更名为aardio,我也见证了它的发展历程。
当时的第一反应是,aardio或许能为Python程序提供图形界面支持。抱着试一试的态度,我先编写了一个极其简单的Python函数作为基础。
def add(a,b): return a+b
随后,借鉴以往使用C语言编写DLL供其他语言调用的思路,我参考aardio中的代码示例,编写了相应的交互代码。
import py3;
var code = string.load("add.py");
py3.exec(code);
py3.exec(code);
__main__ = py3.addModule("__main__"); //创建模块对象
接下来,编辑“计算”按钮的单击事件处理逻辑。
winform.button.oncommand = function(id,event){
//winform.msgbox( winform.button.text );
var n1=tonumber(winform.n1.text);
var n2=tonumber(winform.n2.text);
var s = tonumber(__main__.add(n1,n2));
winform.sum.text=s;
}
最终运行效果如图所示。

最后想谈谈Python脚本语言的特性。Python作为解释型语言,无需编译即可直接运行。这意味着在使用aardio构建的图形界面搭配Python程序时,若需修改部分函数逻辑,只需使用文本编辑器更新py文件即可立即生效,无需重新编译整个应用,极大地提高了迭代效率。
以下是完整的代码清单。
import win.ui;
import py3;
/*DSG{{*/
var winform = win.form(text="加法计算器";right=256;bottom=331)
winform.add(
button={cls="button";text="计算";left=72;top=267;right=188;bottom=305;z=1};
equal={cls="static";left=30;top=156;right=237;bottom=181;transparent=1;z=6};
n1={cls="edit";left=72;top=30;right=188;bottom=68;edge=1;font=LOGFONT(h=-29);multiline=1;z=3};
n2={cls="edit";left=72;top=92;right=188;bottom=130;edge=1;font=LOGFONT(h=-29);multiline=1;z=4};
static={cls="static";text="+";left=14;top=91;right=62;bottom=126;align="center";center=1;font=LOGFONT(h=-29);transparent=1;z=5};
sum={cls="edit";left=72;top=204;right=188;bottom=242;edge=1;font=LOGFONT(h=-29);multiline=1;z=2}
)
/*}}*/
var code = string.load("add.py");
py3.exec(code);
py3.exec(code);
__main__ = py3.addModule("__main__"); //创建模块对象
var i =0 ;
for(i=1;50;1){
winform.equal.text=winform.equal.text+"-"
}
winform.button.oncommand = function(id,event){
//winform.msgbox( winform.button.text );
var n1=tonumber(winform.n1.text);
var n2=tonumber(winform.n2.text);
var s = tonumber(__main__.add(n1,n2));
winform.sum.text=s;
}
winform.show()
win.loopMessage();
以上就是本文的全部内容,希望能为读者的学习提供有益参考,也欢迎大家继续支持本站。
本站声明
本文内容仅供参考,不代表本站观点。转载或引用请注明出处。如发现内容问题,请通过联系我们页面反馈。













