前阵子在用python写一些小程序,写完后就开始思考怎么给python程序配一个图形界面,毕竟控制台实在太丑陋了。javascript
因而百度了下python的图形界面库,眼花缭乱的一整页,拣了几件有“特点”有“噱头”的下载下来作了个demo,仍旧不是很满意,不是下载安装繁琐,就是界面丑陋或者难写难用,文档不齐全。java
后来那天,整理电脑文件发现了6年前下载的aatuo(现已改名aardio),顿时一阵惊喜。python
先说说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; }
最后效果如图:oop
写在最后的话,我想谈谈python这个脚本语言,咱们知道python是解释型语言,因此无需编译就能够运行。因此对于这个aardio界面搭配的python程序,之后若是要修改部分函数,只须要用文本编辑器修改py文件便可运行,而无需从新编译。ui
代码清单:spa
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();