3.控件与页面的Layout
一种方式是C# Winform和Swing那样在程序里生成组件和layout,经历过SWT手写代码画页面的折磨,再看到一层又一层的Container代码(wxWidgets里是Sizer)已经不觉得麻烦了。也有所见即所得的工具如BOA,不过毕竟没有Visual Studio for WinForm那么好,难以真正使用。
一种是像Delphi, VC或未来的XAML那样把控件和layout记在XML文件里。但我没有用。
最难的地方发生在遍历目录,那时候已经有点困了:
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的前面的简写法。
4.美化界面
因为wxWidgets用的是native widgets,不像Delphi,C# 和Swing有专门的look and feel 美化控件,所以美化的主要方式是为Toolbar和Button配上好看的图标,还有修饰整个软件的配色。
推荐Tango一个图标库:http://tango-project.org/ to make open source software beautiful...说出了我的心声啊,"顶尖儿的程序员必有完美主义艺术家之倾向。",目前的图标还不多,迅速更新中。