CPython、Jython与IronPython在跨平台GUI开发中的比较
我在考虑做一个实验性的集成开发环境(IDE),专门用于数字硬件设计。所以我现在在纠结该选哪个平台。
我想要一个带有语法高亮的文本编辑器,还有一些矢量图形和很多标签式窗口。
我的目标是:
1. 尽量少用自定义组件来制作图形界面。
2. 尽量做到跨平台,也就是说可以在不同的操作系统上使用。
(我已经知道CPython和Jython是适合跨平台的,但IronPython+Mono怎么样呢?)
所以,我的问题是关于图形界面,我应该选择什么呢?
8 个回答
好吧,Mono并不是大多数Linux发行版自带的东西。而且它也不是一个特别轻量的依赖项,我觉得很多人可能已经有Java了。你打算用Mono来做“Winforms”吗?如果是这样,而且你对Winforms没有经验,那就看看别人怎么说吧 :-) 另外一个.NET的图形界面工具包是WPF,不过不幸的是,Mono并没有计划去实现它。
Jython也会更好,因为你可以使用SWT,它可以渲染本地控件,并且提供很多布局的可能性,使用起来很简单。或者你可以用Jython搭配Swing,或者其他的工具——如果你喜欢丑陋的东西,甚至可以用AWT。
我个人很喜欢wxPython(可以和CPython一起使用,CPython在大多数发行版中都是默认安装的),因为它在OSX、Windows和Linux上都能渲染出好看的本地控件(我只在现实中见过Gnome的控件)。wxPython是我用过的最简单的图形界面工具包——即使是编程时(也就是不使用Glade或类似工具进行布局)。我也用过SWT,觉得还不错,还有Swing,我个人不太喜欢它的外观,以及Winforms,尝试做简单布局时简直是一场噩梦。
这里有一个关于不同操作系统中解释器/语言运行时存在情况的快速对比:
- CPython
- Windows - 可能没有安装,你得让一个非Python的安装程序和你的软件一起安装它 :-P
- Linux - 可能已经安装(Ubuntu、Gentoo和RedHat都有用Python写的系统工具,运行在CPython上)
- Mac - 在OSX上预装
- Jython
- Windows - 在我经历中,可能某个时候安装过,但它并不自带
- Linux - 可能已经安装,更重要的是,依赖它不会让你被人讨厌,就像Mono那样
- Mac - 在OSX上预装(“Mac OS X Leopard自带J2SE 5.0,基于JDK 1.5.0_13_b05”——来自苹果网站)
- IronPython
- Windows - 可能运行得很好,因为我敢打赌大多数人至少有.NET 2.0,如果他们有较新的Windows版本
- Linux - 可能没有安装——我在Linux上用Mono的唯一应用是Rasterbator,它运行得很好,但我觉得在Linux上使用.NET有点奇怪
- Mac - 见上面
我建议先选择一个图形界面工具包,因为这会对用户体验和整体难度产生很大影响(我会选择wxPython,但SWT会是一个接近的第二选择),然后再考虑上面的内容,或许可以作为一个决策的参考。
我觉得如果你的目标是跨平台,那就别考虑IronPython了。很多人都很讨厌它带来的依赖问题,这样会让你在某些操作系统或发行版上花很多功夫才能让它运行起来。Jython也会遇到类似的问题,不过情况会稍微好一些。
IronPython和Mono可以在多个平台上使用,只要这些平台被Mono支持。简单来说,Mono对Windows Forms的支持还不错。还有其他的图形用户界面工具包可以选择,它们可能在不同平台上表现得更好,或者至少在非Windows平台上使用起来更舒服。
CPython的表现会根据你选择的图形用户界面套件而不同。就我个人而言,我觉得CPython配合PyQt是Python中最实用的跨平台图形用户界面选项。它功能强大,特性丰富,运行得也很好。
Jython也可以使用,但我个人不太喜欢它的图形用户界面选项(这完全是个人喜好)。