【问题标题】:Doing native GUI with Ruby用 Ruby 做原生 GUI
【发布时间】:2011-08-30 19:29:48
【问题描述】:
我想用 Ruby 开发一个桌面应用程序。但是,我希望在每个平台上都有一个本机 GUI(而不是在所有平台上看起来一直很糟糕的跨平台 GUI 工具包)。
我希望必须为每个平台制作不同的 GUI(因为不仅外观不同,行为和习惯用法也不同),但我想知道我的选择是什么?特别想知道是否有一种干净的方法来分离前后端并正确绑定数据?
目标平台是 Windows(Vista 和 7,XP 是奖励)、Mac OS X (Cocoa) 和 Linux(GTK?Qt?不知道)。
【问题讨论】:
标签:
ruby
windows
linux
macos
user-interface
【解决方案2】:
两种跨平台
原来有两种跨平台的 UI 工具包。
一种绘制自己的控件,就像你说的,在所有平台上看起来都一样糟糕。更糟糕的是:除了一个之外,它看起来都不合适。
但是还有另一种只是为原生小部件提供了一个协调的界面。这种工具包的最佳示例is SWT1.. 看起来,它是,几乎在每个平台上都是完全原生的,但它只有一个 API。
因此,您不应该简单地排除所有跨平台工具包,而应排除那些伪造原生 UI 的工具包。
开发包装接口
还有第二种方法。如果你的程序与用户的接口可以通过一个相对狭窄的接口来引导,你可以简单地开发到那个接口,然后为你想要支持的每个平台实现它的底部部分。是的,您必须重写一个模块,但所有其他模块保持完全相同,您将获得本机小部件。您还可以获得最小的可执行文件,而不会产生大量臃肿。
也许最重要的是,您的代码和本机窗口系统之间没有复杂且不透明的软件层。您可能会节省与为第一个端口编写额外模块所花费的时间一样多的时间。
1.我知道我的 Java 示例对您没有太大帮助,除非您使用的是 jRuby,但 SWT 与 Swing 是正确与错误 (IMHO) UI 工具包划分的一个非常纯粹的示例。
【解决方案3】:
WxWidgets 接口声称通过一个 API 在 Windows、OS X、Linux 和 UNIX 上使用本机接口。
过去用过它的同事都非常喜欢它,但我自己没有用过。