时间:2010-07-26 18:19:34

标签: python user-interface ironpython jython cpython

我正在考虑为数字硬件设计制作某种实验性IDE。所以我无法决定选择巫婆平台。

我将使用带语法高亮显示的文本编辑器,一些矢量图形和许多标签窗口。

我的目标: 1.使用尽可能少的自定义组件来使用GUI。 2.使其尽可能跨平台

(我已经知道CPython和Jython是跨平台友好的,但是IronPython + Mono呢?)

所以 - 关于GUI的问题 - 我应该选择什么?

8 个答案:

答案 0 :(得分:9)

答案 1 :(得分:5)

答案 2 :(得分:5)

嗯,Mono没有附带大多数Linux发行版的基础。它也不是一个非常轻量级的依赖,而且我认为Java对于人们已经拥有的可能性要大得多。你打算在Mono上使用“Winforms”吗?如果是这样,并且您没有使用Winforms的经验,请阅读其他人的意见:-)其他.NET GUI工具包是WPF,遗憾的是Mono没有计划实施。

Jython也会更好,因为你可以使用SWT,它可以渲染原生小部件并轻松提供大量布局。或者你可以将Jython与Swing或其他任何东西一起使用 - 如果你喜欢丑陋,甚至可以使用AWT。

我非常喜欢wxPython(它可以与CPython一起使用,默认情况下是大多数发行版),因为它在OSX,Windows和Linux中呈现了漂亮的本机小部件(我只是亲自看过Gnome小部件) 。到目前为止,wxPython是我使用过的最容易使用的GUI工具包 - 甚至是编程方式(即没有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” - Apple的网站)
  • IronPython的
    • Windows - 可能运行正常,因为我敢打赌,如果他们有最新版本的Windows,大多数人至少拥有.NET 2.0
    • Linux - 可能没有安装 - 我在Linux上使用Mono的唯一应用程序是Rasterbator,它运行良好,但我觉得把.NET放在Linux上很奇怪
    • Mac - 见上文

我会首先选择一个GUI工具包,因为这会对用户体验和整体难度产生很大影响(我会选择wxPython但SWT会紧随其后)然后考虑上面的内容以及作为决胜局。

答案 3 :(得分:3)

大约一年前我遇到了同样的问题。在查看了所有替代方案之后,我最终得到了CPython和PyQt。 IMO,Qt / PyQt是迄今为止所有Python GUI工具包中的最佳选择。在wxPython中遇到许多错误后,我切换到PyQt并且从未回头。根据我的经验,Qt / PyQt比wx工具包更加可靠。

我使用完全相同的代码库并构建独立的可执行文件,其中PyInstaller用于Windows,Py2App用于Mac(PyInstaller也可用于Linux)。因为这些构建器嵌入了Python解释器和所有依赖项,所以需要花费很多麻烦。唯一的问题是你需要Windows和Mac来进行构建。让所有配置正确也是一件痛苦的事情,但是有可能并且值得花时间投资。

答案 4 :(得分:2)

答案 5 :(得分:2)

Java 最便携的平台。 Jython是用100%纯Java编写的。 '努夫说。

BTW我只是将一个CPython / GTK项目切换到Jython(尝试尽可能多地删除非托管代码),唯一的问题是Jython仍然处于2.5,当你习惯2.6 / 2.7时这种情况很糟糕/ 3:)

答案 6 :(得分:1)

已经有很多答案,但我想补充一点重要的事情 - 无论你学习哪个库,当你搬到另一个图书馆时,大部分原则都是一样的。

我不知道Qt,但对于大多数图形程序(在PyGTK或Tkinter中),就编辑而言,最好的办法是使用PIL图像(或类似的东西)来绘制然后在画布小部件上绘制该图像,否则如果窗口被覆盖,则可能会丢失像素数据。

答案 7 :(得分:1)

您可以将Python 2.7或3.1(CPython)与ttk一起使用(在2.7,3.1的标准库中),ttk支持主题(看起来不错且编码非常简单)

(第1个屏幕是带有标签和语法高亮显示的文本编辑器) ttk screenshots