comment on python gui toolkit
我有c++/Qt开发经验,也用过pyqt做过东西。
但是,我现在转向了pygtk。
1. qt大而全,由于设计的比较早,且注重和老的c++编译器兼容,没有使用新c++标准,
在实现上时采用了用自带工具预处理生成代码,再进行编译的方式。
qt的类有很多和stl中的类功能重复,但是不兼容。这点比较痛苦。
pyqt并不是trolltech(现在被nokia并购)官方支持的,
是个第三方开发库,采用sip(类似swig的c++ --> python 包装工具)来封装。
sip也是这家开发的,基本是pyqt专用。
如果你想从GUI到业务逻辑都用pyqt实现的话(调用pyqt的网络、多线程、GUI、容器等各种库),那还好一点,
要是只想用pyqt做GUI,后台用python的话,那变成模型和类型的适配,就够让人痛苦的了。
使用pyqt的项目非产少,如果gtkmm那样,不受待见,bug很多。
另外有很多隐藏的细节:比如要注意widget引用,python string 和qstring之间,pysignal,pyslot和qt
signal,qt slot之间的关系等。
pyqt的文档是从qt文档自动转换来的,里面布满了c++的痕迹,不是很好。
2. wxWidget和微软的MFC框架基本一致,古老,落后,采用一大堆宏来建立和初始化消息映射表,让人烦躁。wxPython封装基本和
wxWidget一样的用法,很不pythonic,让人感觉在写c++。
3. pygtk是gtk官方支持的语言绑定,稳定可靠,而且pygtk包装的很好,类型无痛转换,只专注于界面,后台可以方便地使用python自己
的库。采用pygtk的软件很多,见
http://www.pygtk.org/applications.html
另外还有kiwi这种很pythonic的框架。
windows平台上pygtk外观跟native window差别比较大,减少了它的客户群。对这点无要求的话,可以放心地pygtk了。
pygtk的source里面的example 目录下面的例子很有价值。
网上有pygtk for win32 all in on 下载,包含python/gtk/pygtk,另外还有glade 3.4.x for
win32下载。