作者: 

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

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

    因为是发布到网上的小程序,要它很小,java和.net这两个还算当红但要装虚拟机的笨家伙最先out了,而python在之后压成rar才3m,如果有心思还可以弄得更小。
    选是因为它可以通行于windows,linux两个位面,另外也能通用,不过wxwidgets是像swt一样用native widgets的,在winxp上比较好看。
    用python而不是c ,是为了快速开发。当然,心底里其实是贪好玩。本来喜欢ruby的语法更纯洁一些,可惜已经太久没更新了。

   2.wxwidgets
   所谓gui框架,万变不离下面几点:
   1.框架结构
      拿个helloworld一看就懂,又是application->frame->menu 的标准架构。

   2.wxwidgets用法
     来来去去还是text框,选择框,按钮几个老面孔,在上把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)已经不觉得麻烦了。也有所见即所得的工具如,不过毕竟没有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。在中接触过这个概念,平常函数都只能返回一个值,而tuple可以让你返回多个(这样就不用利用传址的参数来返回啦),所以就有了for root,dir,files in os.walk()这样的句子。
    还有 print join(root,name) for name in files,原来python还有这种把闭包写在for的前面的简写法。

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

4.美化界面  
    因为wxwidgets用的是native widgets,不像delphi,c# 和swing有专门的look and feel 美化控件,所以美化的主要方式是为toolbar和button配上好看的图标,还有修饰整个软件的配色。
    推荐tango一个图标库:  to make open  source software beautiful...说出了我的心声啊,"顶尖儿的程序员必有完美主义艺术家之倾向。",目前的图标还不多,迅速更新中。