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

原来只是关注过跨平台组件的选择对比,有 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's Blog
[版权声明] 本文采用 署名-非商业性使用-相同方式共享 4.0 国际 (CC BY-NC-SA 4.0) 进行许可。