PyQT学习 的开始,顺便小谈目前GUI的选择
PyQT学习 的开始,顺便小谈目前GUI的选择
write by 九天雁翎(JTianLing) -- www.jtianling.com
以前学习了MFC,工作前自己也做些小应用,工作后除了在工作组呆了2个月,还有在服务器组时客串写点计算md5值,密码,关键字过滤等小工具的时候,基本上用不到MFC。但是,总的来说,MFC的学习还算是在这段时间发挥了一点作用,也不算白费。至于说MFC的设计多么完善,实在不敢恭维,哪怕是自己随便开发一个小工具,都会有别扭的地方,以前学习的时候,更加是为其开发可以动态改变大小的对话框程序绞尽脑汁。。。。。基本上,理解了MFC的原理后,开发一般的东西是没有问题,除了要看看具体控件的函数调用啥以外,但是过程主要还是以痛苦为主,没有畅快的感觉。。。。而,想要用MFC开发出漂亮的界面,那就。。。。更加痛苦,虽然也许控制力更强,可定制的方式更多,但是。。。实在不是太方便。个人最痛苦的经历是在用MFC做一个游戏的时候,那个痛苦啊,基本上需要的功能基本上是从额外的控件库中获得,学习了CButtonBT,CImageX等后,才好不容易弄出个雏形。。。。何止一个难字了得。这点。。。虽然怪我准备用MFC做游戏的不当,但是也体现了MFC的确有其复杂性所在。
个人认为,像一般的程序语言使用时,控制力强,效率高还在某些时候有一定必要,比如公司现在开发网络游戏服务器,客户端的时候用的都是C++,嵌入式开发时用用C,甚至汇编都可,但是开发界面嘛,还有必要弄的非要绞尽脑汁,翻尽资料才能弄的一个控件有点小小的改变吗(比如自绘控件),RAD嘛,那样,速度岂不是慢了点,虽然一个软件的界面很重要,但是指的不是要求开发的多么痛苦,开发的GUI库要多么能自由的控制。。。。。
综上所述,不喜欢MFC,但是其偏偏是我目前唯一懂的GUI库,我准备改变这一点,准备有空学习QT,PyQT,一起学了,相对来说,QT的资料多些,PyQT就比较少,所以我写的时候可能以PyQT为主。
这里顺便谈谈GUI库的选择
本人其实最大的要求就是跨平台,我不希望到时候需要某个Linux工具的时候还需要额外学习其他库,要学习还不一次学完,虽然我现在使用Linux还是纯控制台(putty远程)。
这里基本上有QT,WxWidget,GTK+,等3种选择
这是我在参考了WxWidget,GTK+等相关了资料后做出的选择。。。。GTK+适应面太窄,而且原生为C设计,不喜欢,WxWidget与QT之间倒是抉择了很久,WxWidget也算是比较广泛使用的东西了,记得《梦断代码》一书中描述的Chandler就是使用了WxWidget,并且WxWidget与QT也有很多共同的优点。比如都有Python的绑定版本:)。
从软件架构上来说,按性格我会更喜欢QT这样面向对象使用更加正规的工具而不是WxWidget和MFC这样太依赖宏的工具,虽然说也许速度会慢一点,我也愿意忍受了,就我的经验来说,似乎程序的瓶颈一般不大可能在这些问题上。并且,看资料了解了一下QT的信令槽机制,直观感觉会比可狰的宏操作的消息映射会好得多。
但是WxWidget有另外一个优点,其不与任何一家公司相关,QT毕竟是诺基亚的产品,毕竟受其控制,个人性格又不太喜欢受制于某一家公司的技术,(即便是微软这样的公司我都不愿意,何况诺基亚呢?)所以当年坚决的没有学Object C并买IPhone,而是打算就算是学JAVA也应该支持Android。当年没有学C#,JAVA而是学了C++,并且,虽然在Windows下工作的较多,但是还是保持着对Linux的兴趣。这些对自己视野的开阔还是有一定好处的,并且对于知识的持久性也是有保证的。。。。听着骂C#多变的人我就偷笑了,呵呵,C++我盼着变都还不变呢。。。。。但是有利有弊吧,学的东西多了,自然不如专门学一个东西精罗,何况,C#多变,还不是其在发展嘛。。。。。。。这是个人在刚毕业,刚工作时候的取舍,不然一开始就太精,视野容易变得很狭窄,虽然也许这样一开始工资会涨的比较快,呵呵,这是关于GUI以外的题外话了。
但是最后我还是选择了QT,首先,QT虽然其属于诺基亚,但是开源,这点保证了不至于太受制于一家公司,另外,还因为QT有额外的优点:
1.他有原生的图形界面平台,那就是KDE,这点目前我能选择的范围内,就只有MFC,GTK+,QT了,WxWidget没有这样的优势。虽然其实我以前用Linux的时候都是在Gnome下。。。(Redhat和Ubuntu的Linux默认都是Gnome,并且因为我一开始用Redhat9是Gnome,也习惯了,后来也没有准备改,看来以后可能需要改到KDE了。。。呵呵,不然怎么领悟QT的优势啊。。。。。)
2.QT能跑在很多移动设备上,除了WM,马上也就会有塞班的版本。
3.QT还能更方便的用于嵌入式开发,甚至QT还能开发命令行的图形界面。
因为这些优点。。。。我还是选择了QT,希望这些额外的优点不要是因为QT有一家大公司在宣传的缘故吧-_-!
最后的最后,其实一些东西没有提到,主要原因就是其不跨平台了,那么跨平台真的有那么重要吗?这点我说不清楚,个人爱好使然。只是,在同样的开发成本下,假如你的软件有跨平台特性,这有什么不好吗?那么JAVA的宣传口号算啥呢?“一次编写,到处运行”。。。。。呵呵,QT的口号是,“一次编写,到处编译”。。。
这里有个网页,做了一些比较,大家可以参考一下:
write by 九天雁翎(JTianLing) -- www.jtianling.com
Posted By 九天雁翎 at 九天雁翎的博客 on 2009年06月14日