我想用Ruby开发一个桌面应用程序。 不过,我想在每个平台上都有一个本地GUI(相对于跨平台的GUI工具包,在所有平台上看起来一直很糟糕)。
我期望为每个平台做不同的graphics用户界面(因为它不仅仅是外观,还包括不同的行为和成语),但我不知道我的select是什么? 特别想知道是否有一个干净的方式来分离前端和后端,并正确地绑定数据?
目标平台是Windows(Vista&7,XP是一个奖金),Mac OS X(cocoa)和Linux(GTK?Qt?不知道)。
Ruby语言有很好的Qt库绑定 ,你的脚本将是跨平台的。
两种跨平台
原来有两种跨平台的UI工具包。
有一种是自己的控制,就像你说的,在所有的平台上看起来同样糟糕。 更糟糕的是,除了一个之外,它看起来不合适。
但还有一种只是为本地小部件提供了一个协调的接口。 这种工具包最好的例子是SWT 1 。 它看起来,在每个平台上都大约是完全原生的,但它只有一个API。
所以你不应该简单地排除所有跨平台的工具包,只要排除那些假冒原生UI的。
开发包装界面
还有第二种方法。 如果您的程序与用户的接口可以通过相对较窄的接口进行定向,则可以简单地开发到该接口,然后针对您要支持的每个平台实现其底部。 是的,你必须重写一个模块,但所有其他模块保持完全一样,你得到本地的小部件。 您还可以获得尽可能小的可执行文件,而不会出现很多臃
也许最重要的是,你的代码和本地窗口系统之间没有复杂而不透明的软件层。 您可能会节省尽可能多的时间调试,因为您为第一个端口编写额外的模块。
1.我知道我的Java例子不会对你有什么帮助,除非你使用jRuby,但是SWT vs Swing是一个非常正确与错误(恕我直言)的UI工具包划分的纯粹例子。
WxWidgets接口声称通过一个API在Windows,OS X,Linux和UNIX上使用本地接口。
过去曾经使用过的同事很喜欢,但我自己并没有用过。