利用aardio给python编写图形界面


Posted in Python onAugust 21, 2017

前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了。

于是百度了下python的图形界面库,眼花缭乱的一整页,拣了几件有“特色”有“噱头”的下载下来做了个demo,仍旧不是很满意,不是下载安装繁琐,就是界面丑陋或者难写难用,文档不齐全。

后来那天,整理电脑文件发现了6年前下载的aatuo(现已更名aardio),顿时一阵惊喜。

先说说aardio,2011年7月的时候,它还叫aauto,那时的自己还醉心于开发桌面应用,VC++(MFC),C#(Winform),Java(Swing),Delphi都被玩了个遍,偶尔网上百度到了aauto,下载下来试用了下,你会被它的IDE“免安装”和“使用友好”感动到,而且最终发布的EXE文件也很小,确实是一个很适合开发小工具或者小应用的语言。后来,aauto更名为aardio,我也有幸成为目睹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;
}

最后效果如图:

利用aardio给python编写图形界面

写在最后的话,我想谈谈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();

以上就是本文的全部内容,希望对大家的学习有所帮助,也希望大家多多支持三水点靠木。

Python 相关文章推荐
Python的条件语句与运算符优先级详解
Oct 13 Python
python:socket传输大文件示例
Jan 18 Python
mysql 之通过配置文件链接数据库
Aug 12 Python
Python数据结构与算法之完全树与最小堆实例
Dec 13 Python
python爬虫实现中英翻译词典
Jun 25 Python
Django的Modelforms用法简介
Jul 27 Python
利用python计算时间差(返回天数)
Sep 07 Python
500行代码使用python写个微信小游戏飞机大战游戏
Oct 16 Python
django中media媒体路径设置的步骤
Nov 15 Python
python使用pyecharts库画地图数据可视化的实现
Mar 25 Python
python 下载m3u8视频的示例代码
Nov 11 Python
Pycharm在指定目录下生成文件和删除文件的实现
Dec 28 Python
Python实现图片转字符画的示例代码
Aug 21 #Python
Python微信企业号开发之回调模式接收微信端客户端发送消息及被动返回消息示例
Aug 21 #Python
Python编程实现微信企业号文本消息推送功能示例
Aug 21 #Python
Python编程之微信推送模板消息功能示例
Aug 21 #Python
使用Python写一个贪吃蛇游戏实例代码
Aug 21 #Python
virtualenv实现多个版本Python共存
Aug 21 #Python
基于Python对象引用、可变性和垃圾回收详解
Aug 21 #Python
You might like
浅析echo(),print(),print_r(),return之间的区别
2013/11/27 PHP
XAMPP安装与使用方法详细解析
2013/11/27 PHP
PHP中copy on write写时复制机制介绍
2014/05/13 PHP
PHP开发Apache服务器配置
2015/07/15 PHP
php实现的一段简单概率相关代码
2016/05/30 PHP
firefox浏览器不支持innerText的解决方法
2013/08/07 Javascript
jquery实现无限分级横向导航菜单的方法
2015/03/12 Javascript
JQuery勾选指定name的复选框集合并显示的方法
2015/05/18 Javascript
jQuery增加自定义函数的方法
2015/07/18 Javascript
在JavaScript的jQuery库中操作AJAX的方法讲解
2015/08/15 Javascript
实例详解Nodejs 保存 payload 发送过来的文件
2016/01/14 NodeJs
javascript求日期差的方法
2016/03/02 Javascript
js中的eval()函数把含有转义字符的字符串转换成Object对象的方法
2016/12/02 Javascript
AngularJS 霸道的过滤器小结
2017/04/26 Javascript
JS数组去重常用方法实例小结【4种方法】
2018/05/28 Javascript
详解Vue This$Store总结
2018/12/17 Javascript
浅谈Node框架接入ELK实践总结
2019/02/22 Javascript
基于vue-cli3创建libs库的实现方法
2019/12/04 Javascript
微信小程序 SOTER 生物认证DEMO 指纹识别功能
2019/12/13 Javascript
Vue插件之滑动验证码用法详解
2020/04/05 Javascript
[47:12]TFT vs Secret Supermajor小组赛C组 BO3 第三场 6.3
2018/06/04 DOTA
[01:16:13]DOTA2-DPC中国联赛 正赛 SAG vs Dragon BO3 第一场 2月22日
2021/03/11 DOTA
python使用sessions模拟登录淘宝的方式
2019/08/16 Python
pytorch .detach() .detach_() 和 .data用于切断反向传播的实现
2019/12/27 Python
python实现查找所有程序的安装信息
2020/02/18 Python
python实现学生信息管理系统(精简版)
2020/11/27 Python
CSS3 @font-face属性使用指南
2014/12/12 HTML / CSS
CSS3 实现发光边框特效
2020/11/11 HTML / CSS
您的网上新华书店:文轩网
2016/08/24 全球购物
露营世界:Camping World
2017/02/02 全球购物
英国屋顶用品和材料超市:Roofing Supplies UK
2019/08/24 全球购物
在SQL Server中创建数据库主要有那种方式
2013/09/10 面试题
2015年党员公开承诺书范文
2015/01/22 职场文书
Nginx优化服务之网页压缩的实现方法
2021/03/31 Servers
python基础之类方法和静态方法
2021/10/24 Python
解决Mysql报错 Table 'mysql.user' doesn't exist
2022/05/06 MySQL