想选一种动态语言+跨平台界面组件的组合,希望大家给点意见

原来只是关注过跨平台组件的选择对比,有 GTK、wxWidgets、Qt、AWT/SWING、SWT。

GTK 是 GNOME 的实现组件

wxWidgets 对于用过 MFC 的人来说用起来很顺手

Qt 是 KDE 的实现组件

AWT/SWING 无需多说,SWT 相信也为 Java 开发人员熟知了。

曾得益于 VC 写的程序小巧且基本上拷个 EXE 文件到别人机器上就能运行,所以希望还是用 C++ 来编写界面程序,所以考虑过 wxWidgets 和 Qt。后来发现这两个组件的动态库的个头也不小,即使在客户端安装个 JRE 又何妨,何况 JAVA+SWT 的程序与 wxWidgets/Qt 的本地程序速度上差别已不大。综上,如果仅仅是跨平台的界面程序个人看重 JAVA+SWT 了,SWING 给我产生的欲望还不大。

而现在重现思考起用一种动态语言来写跨平台的界面程序,JAVA 写的 SWT 程序仍然是有个编译过程,想从中得到的好处就是直接改了源代码马上就能看到效果,主要用途是写一些个人用的小的实用工具程序。

到各处找了找,较常见的有以下几些个组合:

1.   Perl + Qt                      PerlQt               在 Windows 下似乎不好配置,好像要 cygwin 来帮忙
2.   Perl + wxWidgets         wxPerl              用 ppm install Wx-0.26.ppd 安装 wx 模块居然没成功
3.   Perl + TK                     PerlTk              TK 的界面其实不好看
4.   Groovy + SWT            Groovy 能和     SWT 搭配,BeanShell 加 SWT 应该没问题
6.   TCL + TK                   TCL/TK           TCL 和 TK 是原配
7.   Python + Qt                 PyQt                 好像安装起来简单些
8.   Python + wxWidgets                             wxWidgets 的粘合性很强的
9.   Python + TK                Tkinter              TK 和谁能搭上点关系
10. Ruby + TK                   Ruby/Tk           Ruby 也奈不住寂寞
11. Java + QT                    QtJava              其实它不应在此列表中,用了 Java 为何还选择 Qt

补充一个
12. Python + GTK             PyGTK             Python 真够强的啊

用语言的角度,个人比较偏爱于 Perl,灵活性很强,极具个性化的语言,众多的内置变量,无与伦比的正则表达式用法,特别适合于写小的实用工具。Qt 的编程风格与 Swing/SWT 相近,wxWidgets 的风格基本借鉴了 MFC,基于消息映射,较难理解。所以我首选是 Perl + Qt (PerlQt),可就是没配置起来,要么是在 Linux 下用,在 Windows 下似乎还需要 cygwin 支持。

Groovy + SWT 也是个很好的选择,Groovy 使用起来也方便,并且让你能延续使用 Java 类的习惯。而且还有一个专门的 groovy-swt.jar 使得 Groovy 使用 SWT 更轻松。

TCL/TK 只在几年前安装一个 IPMI 驱动的时候第一次见识过,才引起我对它的兴趣来,一度研究过它,但这种语言与 C++ 风格相差较大,基本放弃了。TK 的界面与本地界面对比有些大,不是很喜欢。

Python 的排名可谓突飞猛进,不过对于我用动态脚本语言主要是在小工具上,缺乏类,继承等特性的 Perl 就足够了。Ruby 只作过少许关注。

通过以上的对比,个人仍然较钟爱于 PerlQt,如果在 Windows 下能把开发环境轻松配置起来,还是想用这个组合。其次则是 Groovy + SWT,SWT 框架有一定程度的熟悉,Groovy 语言今天大致浏览了一下,觉得挺不错的。

我所知晓的是为 VC 安装配置 Qt 和 wxWidgets 都不那么是,就不知动态语言要用这两个界面组件配置难不难。

不知众位,如果是要选择一种动态脚本语言+跨平台的界面组件会选择什么呢?

本文链接 https://yanbin.blog/script-plus-crossed-widget/, 来自 隔叶黄莺 Yanbin Blog

[版权声明] Creative Commons License 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。

Subscribe
Notify of
guest

13 Comments
Inline Feedbacks
View all comments
tashan
tashan
7 years ago

他山界面混合开发框架 OHUI 目前支持 xp,2003,win7,8,9,10+ 32/64 系统,支持 linux,android,支持 xul,xbl,html,css,js,c++/java 混合编程,嵌入 gecko v1.9~v52 引擎,html5,css3 支持程度可参考对应版本的 firefox,OHUI v22 Windows 版 13mb,linux 21mb,v45 android 23MB

softwave
16 years ago

Flex做UI

宇义
宇义
16 years ago

python + GTK/XUL...

隔叶黄莺
16 years ago

Flex 是做 RIA 的,还无法用于做实用小工具的,Python + GTK 在网上有个叫 PyGTK 的东西,不过 GTK 的概念接近于 GNOME 底层的东西,像 X11 服务之类的。

比较来看,确实是 Python 要对 Perl 更有市场啊,如果用 Python 语言的话,我会用 PyQt 了。

Always BaNg.
16 years ago

我觉得Windows上开发小工具还是MFC速度最快,API最强大,与系统结合最紧密。至于其他平台如linux, unix都是用shell或perl/python来实现小工具,因为如果要在上面GUI dev,还必须安装X11及toolkit,并且开发效率很低。

隔叶黄莺
16 years ago

其实我想要的有以下几点:

1. 语言的动态性,代码随时改就能直接看到效果,程序能达到随需应变

2. 能充分发挥语言特性,语言本身要有丰富的功能。

3. 编制界面程序简单,Qt 和 SWT 都很明了,比 MFC/wxWidgets 理解起来容易的多

4. 编程环境搭建容易,执行文件大小适中

perl 写网络、正则表达式都比 C++ 来得方便,VC6 中用正则表达式还要用到第三方的 boost,MFC 程序都是编译好的。如果 PerlQt 编程环境搭建简单的话,我就会选择 PerlQt,有谁在用 PerlQt 的,能否说下如何最快速的建好 PerlQt 编程环境。

鬼狗
16 years ago

应该罕有人用perlqt的, 动态语言里面基本是python用的比较多,最近也有增加ruby的趋势。

我建议你选python+wx 或者python+qt的模式, 使用者多,有问题容易解决。

groovy现在不知道怎么样了,以前这玩意调试相当的痛苦,因为报错信息定位不准确,去年问一个朋友,说还是老样子。

其实最适合做这个的是judosript,有浓重的perl风格,不过现在已经完蛋了。

Feng
Feng
16 years ago

我前段时间在linux做一些小工具,最后选择了Python+GTK的组合。原来写java的,第一次使用Python感觉不错,开发快速,基础库也比较丰富,有i18n的支持。

dennis
16 years ago

其实吧,要做的选择就是在wxWidgets 和tk之间选择一个,python/perl/ruby都是在此基础上对API的封装,剩下的就是语言的选择,哪个熟悉用哪个。俺建议一个额外选择:javafx

隔叶黄莺
16 years ago

wxWidgets 用起来没有 Qt 顺手,tk 好象是完全自绘的组件,界面不太好看。另外大略看了一下 JavaFx,感觉语法上太过于花哨,这就是它所谓的 syntactic sugar,语法糖。

博学精思慎言笃行

关注。

隔叶黄莺
16 years ago

看来还要关注一下 GTK,如 Gtk-Perl,Gtk2-Perl,PyGtk。GTK的跨平台性应该也还不错,虽然看起来都是自绘的组件,但看起来比 Swing 的界面舒服一些。