PYTHON 桌面开发

充分体验到知识循环再用的好处,原本对Python、wxWidgets没有接触的,天黑天亮之间,已经作了一个半成品的桌面程序出来。


1.选型

通常选型之后,都会迫切的告诉别人自认为正确的原因,这时候路过的人就比较不幸了。

我选Python和wxWidgets,是因为.......


因为是发布到网上的小程序,要它很小,Java和.Net这两个还算当红但要装虚拟机的笨家伙最先out了,而Python在py2exe之后压成rar才3M,如果有心思还可以弄得更小。

选wxWidgets是因为它可以通行于Windows,Linux两个位面,另外Fox也能通用,不过wxWidgets是像SWT一样用Native Widgets的,在WinXP上比较好看。

用Python而不是C++,是为了快速开发。当然,心底里其实是贪好玩。本来喜欢Ruby的语法更纯洁一些,可惜wxRuby已经太久没更新了。


2.wxWidgets

所谓GUI框架,万变不离下面几点:

1.框架结构

拿个HelloWorld一看就懂,又是Application->Frame->Menu 的标准架构。


2.wxWidgets用法

来来去去还是Text框,选择框,按钮几个老面孔,在wxPython上把wxPython2.6-win32-docs-demos-2.6.1.0.exe档下载回来,就有C++版本的API手册与python版本的每个widgets的Demo Code。


3.控件与页面的Layout

一种方式是C# Winform和Swing那样在程序里生成组件和layout,经历过SWT手写代码画页面的折磨,再看到一层又一层的Container代码(wxWidgets里是Sizer)已经不觉得麻烦了。也有所见即所得的工具如BOA,不过毕竟没有Visual Studio for WinForm那么好,难以真正使用。

一种是像Delphi, VC或未来的XAML那样把控件和layout记在XML文件里。但我没有用。


4.事件分发机制

像 EVT_BUTTON(self,ID_UPLOAD, self.onUpload)这样的代码,挺简单的。


可见,只要有过GUI编程的经验,再学wxWidgets 很容易。

参考书:《Cross-Platform GUI Programming with wxWidgets》

《wxPython in Action》


3. Python

手边放一本Python的参考书,只要对动态语言有点感性认识,对着Sample Code能能猜就猜,猜不到就拿chm版的参考书来索引,也很容易入门。


最难的地方发生在遍历目录,那时候已经有点困了:



for root, dirs, files in os.walk('C:/projects/'):

print sum(getsize(join(root, name)) for name in files)


这是什么见鬼语法阿!!

原来os.walk('C:/projects") 的返回值是一个tuple。在C++ Boost库中接触过这个概念,平常函数都只能返回一个值,而tuple可以让你返回多个(这样就不用利用传址的参数来返回啦),所以就有了for root,dir,files in os.walk()这样的句子。

还有 print join(root,name) for name in files,原来python还有这种把闭包写在for的前面的简写法。


IDE最后还是用了Eclipse的插件PyDev,毕竟Eclipse看着比较舒服,其他编辑器做得那么难看,怎么还好意思收钱。


4.美化界面

因为wxWidgets用的是native widgets,不像Delphi,C# 和Swing有专门的look and feel 美化控件,所以美化的主要方式是为Toolbar和Button配上好看的图标,还有修饰整个软件的配色。

推荐Tango一个图标库:http://tango-project.org/ to make open source software beautiful...说出了我的心声啊,"顶尖儿的程序员必有完美主义艺术家之倾向。",目前的图标还不多,迅速更新中。
  • 0
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值