【问题标题】:CPython vs. Jython vs. IronPython for cross-platform GUI development [closed]CPython vs. Jython vs. IronPython 用于跨平台 GUI 开发 [关闭]
【发布时间】:2010-07-26 18:19:34
【问题描述】:

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

我将拥有带有语法突出显示的文本编辑器、一些矢量图形和许多选项卡式窗口。

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

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

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

【问题讨论】:

    标签: python user-interface ironpython jython cpython


    【解决方案1】:

    IronPython with Mono 是跨平台的——适用于 Mono 支持的任何平台,以及 Mono 支持的功能集(这几乎意味着 Windows 窗体得到了很好的支持)。不过,GUI toolkits are available 的其他选项可能会提供更好的“跨平台”功能,或者至少在非 Windows 平台上感觉更好。

    CPython 将取决于您选择的 GUI 套件。就个人而言,我发现CPython with PyQt 是 Python 中最有用的跨平台 GUI 选项。它非常强大,功能丰富,而且运行良好。

    Jython 可以,但我个人不太喜欢 GUI 选项(不过,这是 100% 的个人偏好)。

    【讨论】:

      【解决方案2】:

      我想说,如果跨平台是一个目标,那就忘了 IronPython。 很多 人讨厌它导致的依赖地狱,因此要让它在某些操作系统/发行版中运行会花费太多的工作量。 Jython 也会遭受这种痛苦,尽管程度较轻。

      【讨论】:

      • Jython?我认为 Java 确实是跨平台的选择。 Jython
      • 根据我的经验,IronPython with Mono 很容易在其他平台上运行。 Mono 的设置非常严格,发行版支持 Windows 窗体...
      • @Halst Exatcly:它只比 CPython 更不依赖于平台,因为 Jython 需要 Java 和 Python-Java 绑定。 CPython 只需要 CPython。因此,如果您认为这需要更多的工作来实现它,那么它确实只是更少的跨平台,因为默认情况下您会发现更多具有 CPython pkgs 的平台。
      • 我可以不同意吗?除非您使用许多 Python 开发人员不喜欢的 Tkinter,否则与其他 GUI 选项所需的其他依赖项相比,您更有可能拥有 Java:wxWidgets、pyQt 和 pyGtk 都不太可能安装在 Windows 上而不是 Java。即使在 Linux 上,wxWidgets 的可用性也低于 Java,pyQt 和 pyGtk 在 GNOME/KDE 系统上也是如此。
      • @Muhammad 你说得有道理;我的观点更多地是关于 IronPython 选项而不是 Jython。我提到的问题是让 Java+Python 位运行。上次我尝试时,我遇到的麻烦远不止使用 apt-get/emerge/ports/etc 来让 PyQt 运行。
      【解决方案3】:

      嗯,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,即使是简单的布局也是一场噩梦。

      以下是 OS 存在的解释器/语言运行时的快速比较

      • 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 的网站)
      • 铁蟒
        • Windows - 可能会运行良好,因为我敢打赌,如果大多数人拥有最新版本的 Windows,他们至少拥有 .NET 2.0
        • Linux - 可能没有安装 - 我在 Linux 上使用 Mono 的唯一应用程序是 Rasterbator,它运行良好,但我觉得将 .NET 放在 Linux 上很奇怪
        • Mac - 见上文

      我会首先选择一个 GUI 工具包,因为这会极大地影响用户体验和整体难度(我会选择 wxPython,但 SWT 会紧随其后)然后考虑上述以及可能作为决胜局。

      【讨论】:

      • 我还要添加 Jython 不适用于需要 C 接口的 python 模块的约束,因此如果您希望使用大量 python 模块,这可能会限制您的选择跨度>
      【解决方案4】:

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

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

      【讨论】:

        【解决方案5】:

        看看用 python/jython/ironpython 编写的类似 GUI。寻找您喜欢的程序并找出它们使用的程序。我猜大多数(如果不是全部)都会用 cpython + gtk 或 cpython + qt 编写。我认为python中的所有gui工具包都是跨平台的。

        【讨论】:

        • bazaar.canonical.com/en 有一个很棒的跨平台 GUI——它是用 PyQt 编写的。也有很多用 PyGTK 编写的。
        【解决方案6】:

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

        顺便说一句,我刚刚将一个 CPython/GTK 项目切换到 Jython(试图删除尽可能多的非托管代码),唯一的问题是 Jython 仍然是 2.5,当您习惯了 2.6/2.7 时,这有点糟糕/3 :)

        【讨论】:

          【解决方案7】:

          已经有很多答案了,但我想补充一件重要的事情——不管你学的是哪个图书馆,当你搬到另一个图书馆时,大部分原则都是一样的。

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

          【讨论】:

            【解决方案8】:

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

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

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2023-03-24
              • 2010-09-28
              • 1970-01-01
              • 2012-05-21
              • 1970-01-01
              • 1970-01-01
              • 1970-01-01
              相关资源
              最近更新 更多