我想用Ruby开发一个桌面应用程序。但是,我希望在每个平台上都有一个本机GUI(而不是跨所有平台看起来一直很糟糕的跨平台GUI工具包)。
我希望每个平台都要做不同的GUI(因为它不仅仅是外观,还有不同的行为和习语),但我想知道我的选择是什么?特别想知道是否有一种干净的方法来分离前端和后端并正确绑定数据?
目标平台是Windows(Vista& 7,XP是Bonus),Mac OS X(Cocoa)和Linux(GTK?Qt?不知道)。
答案 0 :(得分:4)
Ruby语言非常出色Qt library bindings,您的脚本将是跨平台的。
答案 1 :(得分:3)
两种跨平台
事实证明,有两种跨平台的UI工具包。
有一种是自己控制的,就像你说的那样,在所有平台上都看起来同样糟糕。更糟糕的是:除了一个外,它看起来都不合适。
但还有另一种只为本机小部件提供协调的接口。这种工具包的最佳示例is SWT1..看起来,是,在每个平台上大致完全原生,但它只有一个API。
因此,您不应该简单地排除所有跨平台工具包,只排除伪造本机UI的工具包。
开发包装器界面
还有第二种方式。如果您的程序与用户的界面可以通过相对较窄的界面进行定向,那么您可以简单地开发到该界面,然后为您要支持的每个平台实现它的底部部分。是的,您必须重写一个模块,但所有其他模块保持完全相同,您将获得本机小部件。您还可以获得尽可能小的可执行文件而不会有太多膨胀。
也许最重要的是,您的代码与本机窗口系统之间没有复杂且不透明的软件层。您可能会花费尽可能多的时间进行调试,因为您需要为第一个端口编写额外的模块。
1。我知道除非你使用jRuby,否则我的Java示例对你没什么帮助,但是SWT vs Swing是一个非常纯粹的正确与错误(恕我直言)UI工具包划分的例子。
答案 2 :(得分:2)
WxWidgets接口声称通过一个API在 Windows,OS X,Linux和UNIX 上使用本机接口。
过去使用它的同事很享受它,但我自己并没有使用它。