【问题标题】:Cross-Platform Programming Language with a decent gui toolkit?带有不错的 gui 工具包的跨平台编程语言?
【发布时间】:2009-10-31 04:34:48
【问题描述】:

对于我的程序想法,它要求软件以所有主要桌面平台都可以执行的二进制文件编写,这意味着它需要解释语言或 JVM 中的语言。两者都适合我,但编程语言必须平衡功能和简单性(例如 Python)

我知道 wxPython,但我了解到它在 Mac OS X 上的支持相当有限

Java 听起来不错,看起来也不错,但用它来编程似乎太难了

有什么帮助吗?

【问题讨论】:

  • 不确定“一个二进制”的要求。用户喜欢平台原生的感觉,其中包括特定于平台的安装方法。因此,如果值得为每个平台制作安装程序,您也可以允许为每个平台编译/构建。只是一个想法。

标签: java python cross-platform wxpython multiplatform


【解决方案1】:

我使用 Python 和 wxPython 已经有一段时间了,发现它非常易于使用。我现在将 Java 与 Swing 和 SWT 一起使用。

我更喜欢 Java,但这只是个人喜好,所以你不应该让它影响你。

我发现从 Python 到 Java 的过渡并不困难。在 GUI 方面,它们都具有布局管理器范例 - 管理器不同但差别不大,您将无法切换。

Java 有一个绝对的巨大 类库,以至于您可能不需要编写自己的任何版本,只需将组件串在一起即可。我从来没有真正深入了解过 Python,但它可能很相似。我确实注意到的一件事是,我在 Python 中使用的所有真正好的东西(例如,s[-4:-1])在 Java 中仍然可以很容易地完成。两种语言都比 C 语言更上一层楼,在 C 语言中我必须使用自己的库来管理字符串。

如果您认为 wxPython 在 MacOS 上受限,您应该尝试 Java。我在 Windows、Linux 和其他 UNIX 上运行我的 Java 代码,没有兼容性问题。可悲的是,不是 Mac,所以我真的不能在那里给你建议。

我的建议是,选择一个小型项目——同时使用 Python 和 Java——看看它如何在你感兴趣的所有平台上运行。

【讨论】:

    【解决方案2】:

    带有PyQt 的Python 或最终等效但免费的PySide 似乎是要走的路——毕竟,很少有语言比Java 更容易编程(你认为“几乎也是难以编程”),Python 是其中之一,Qt 可以说是任何语言中最好的跨平台 GUI 工具包,以及 PyQt(现在,但 GPL 或 for-$$$)或 PySide(最终,即使你想要封闭自己的代码)是 Python 和 Qt 之间的强大接口。

    【讨论】:

      【解决方案3】:
      • 您可以使用任何针对 JVM 的语言,例如Jython(Python 实现)和 JRuby(Ruby 实现)。

      • 您可以尝试将Qt bindings 用于 Python,Qt seems to support 用于 Mac OSX 的许多细节。

      【讨论】:

        【解决方案4】:

        考虑 Tcl/Tk。我不确定您如何定义“一个可由所有主要桌面平台执行 [原文如此] 的二进制文件”,但 Tcl 可能与 java 一样满足这一点,并且可能比任何其他脚本语言更好。

        使用 starkits 的 tcl 打包技术,您可以 a) 创建一个可以在具有适当运行时引擎的任何平台上运行的单个文件(它们适用于所有主要和许多次要平台),或者您可以打包将特定平台的运行时引擎和跨平台的 Starkit 整合到每个平台的单个可执行文件中。

        starkit 技术是其他语言应该向往的。您得到的是一个完整的、功能齐全的虚拟文件系统,包含在单个文件中。这使您可以轻松地将声音文件、dll/.so 文件(出于明显 (?) 原因必须将其复制到磁盘)、图像、数据等与可执行代码一起打包。

        图形库 Tk 非常成熟,在所有平台上都有很好的支持。有些人认为它看起来过时了,但这些印象通常是基于至少 5 年前的信息。现代 Tk 看起来相当不错。有关一些示例,请参见tkdocs 网站。我不清楚您是否更关心眼睛糖果或功能,但如果您对功能感兴趣,那么 Tk 是值得认真考虑的。

        大多数人都同意 Tcl 是一种后天的品味,但专业使用它的人通常对此深信不疑。过去几个月我一直在进行 wxPython 编程,如果有机会,我会立即切换回 tcl/tk。

        【讨论】:

          【解决方案5】:

          您可以使用 Groovy 来解决 Java 的复杂性。

          仍然需要良好的 Swing 基础。

          虽然学习曲线可能很陡峭,但不必为下一个平台再次完全重写整个应用程序的交易将是一个很好的回报。

          请记住,即使它是跨平台的,您应该考虑到不同的平台仍然有不同的习语(例如,复制/粘贴在 Windows 中是 ctrl+v、ctrl+v 而在 Mac 中是 cmd+c、cmd+ v)

          【讨论】:

            【解决方案6】:

            我正在开发一个必须在 Windows、Linux 和 OS X 上运行的程序(OS X 是我的开发平台),而我们使用的是 wxPython。

            如果我有机会重新开始,我可能会选择 PyQT(基于朋友的建议),但 wxPython 会完成这项工作。

            【讨论】:

              【解决方案7】:

              我认为 wxPython 非常好,虽然我不确定您所说的“对 Mac OS X 的支持相当有限”是什么意思,但我一直在将 wxPython 应用程序 (www.mockupscreens.com) 移植到 Mac 上,但它不是几乎没有调整就那么困难,例如某些 UI 元素可能不会像您预期的那样出现,因为 wxPython 使用原生 UI 元素,根据您的要求,这可能是一个优势或劣势。

              其他不错的选择是 PyQT,它将在所有平台上为您提供一致的外观。

              【讨论】:

                【解决方案8】:

                Java 似乎更适合您的需求。

                那么 Javascript 中的 Web 应用程序呢?

                【讨论】:

                  【解决方案9】:

                  SWT怎么样

                  • 跨平台
                  • 原生外观
                  • 庞大的社区
                  • 持续维护/升级(IBM 支持)
                  • 至少one超级成功的跨平台项目

                  【讨论】:

                  • 此外,与其他 Java 工具相比,SWT 具有更多具有原生外观的控件。
                  【解决方案10】:

                  我建议走 wxPython 路线,我知道 wxWidgets(这是 wxPython 正在使用的)可以制作出漂亮的 Mac 应用程序(查看 postgresql 中的 PgAdmin3)。虽然 PgAdmin3 不是在 python 中完成的,但它是使用 wxWidgets 完成的,并且在 mac 上看起来不错。

                  【讨论】:

                    【解决方案11】:

                    我经常使用三个跨平台工具: Realsoftware 的 Realbasic,如果允许其发展,这就是 Visual Basic v6 的样子;来自 Runrev 的革命,如果允许 Hypercard 生存下去,这就是 Hypercard 的样子(并且它使用一种语法基本上是英语的脚本语言很简洁);最后是带有 Mono 的 Delphi Prism。

                    一切都相当成熟,而且还在以极快的速度扩张。例如,Revolution 只是在其语言中引入了一个非常易于使用的 Web 应用程序功能。

                    【讨论】:

                      猜你喜欢
                      • 2011-01-25
                      • 2011-02-14
                      • 2010-12-06
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 1970-01-01
                      • 2011-02-15
                      • 2011-04-12
                      相关资源
                      最近更新 更多