Ruby对于GUI开发有什么优势吗?

22

我正考虑创建一个基于GUI的工具,希望它能够跨平台。我已经排除了Java,因为我个人不喜欢Swing。目前,我正在考虑使用C#并使用Mono使其跨平台。但是,我想知道像Ruby这样的新型跨平台语言是否可以为我提供良好的GUI开发环境。


我实际上使用了一个跨平台应用程序,它有一个工具包我可以使用:Netbeans。我认为它是基于Swing的,但你可以将Netbeans作为抽象层。我很想用Ruby做点什么,但是答案中提到的所有框架看起来都非常不成熟。如果微软能够使.Net跨平台就好了... - Dan Rosenstark
嗯,.NET是跨平台的。它被称为Mono,哟。 - Jonathan Sterling
13个回答

38
简短回答: 不行(因为你提到了“跨平台”)。 详细回答: 跨平台GUI一直是一个老问题。Qt、GTK、wxWindows、Java AWT、Java Swing、XUL等所有工具包都有同样的问题:生成的GUI在每个平台上看起来不太像本地应用程序。更糟糕的是,每个平台都有稍微不同的外观和感觉,所以即使你能找到一个在每个平台上都看起来本地化的工具包,你还需要在每个平台上编写代码,让应用程序的感觉也本地化。
这归结为一个决定:你想要最小化开发工作量,并且有一个GUI在每个平台上看起来和感觉都不完全正确,还是你想要最大化用户体验?如果你选择第二个选项,你需要为每个平台开发一个通用后端和自定义UI。
对于通用后端,Ruby不是一个坏选择。

1
尽管我不喜欢你的回答 - 因为它不是我想要听到的 - 但这是最有用(而且诚实!:))的回答。 - David Arno
1
SWT for Java难道不是试图解决在跨平台环境中拥有本地GUI的问题吗? - Kibbee
2
我认为人们接受的唯一“本地”GUI但实际上不是本地的是Web浏览器。这就是为什么我非常喜欢RIA的原因。 - Nosredna
3
如果设计得当,Qt 应用程序看起来和感觉就像本地应用程序。 - Jason Voegele

8
Ruby有Shoes,但它可能有点轻量级。

我的经验是,鞋子并不是很好。 - irl_irl
顺便说一下,链接对我来说无法使用。鞋子项目已经停止了吗? - Genadinik
Shoes 项目已经重新启动,采用了新的方法:它具有纯 Ruby API,与旧版本大多兼容,并且具有可插拔的工具包,可以创建实际的视觉效果。(目前唯一的工具包是 Java Swing) - Daniel Rikowski

8

GTK... SciTE是通过GTK移植的,从Windows的900 kbytes移动到Mac的80 mbytes。即使不计算所有依赖项(如python、perl、sqlite等),它只需要约20秒就可以启动。 - Nakilon

7

使用Ruby,您可以使用Tk,这是一个成熟的、跨平台的UI工具包。它是Python和Tcl的事实标准GUI工具包,并且也可用于与Perl一起使用。最新版本的Tk使用本机小部件,解决了Tk看起来过时的主要问题。

一个致力于Tk的语言中立网站是http://www.tkdocs.com/,其中包括用Ruby和Tcl编码的示例。


对于任何想要使用TK的人,我有一个小建议:提前规划好你想要的用户界面和每个窗格的样式。然后学习TK中这些元素的名称,其他的就会迎刃而解了。一开始我也曾经认为自己能够轻松地完成它,但是我发现我还有很长的路要走。 - FilBot3

2

2

还有FXRuby,它有一本《程序员修炼之道》的书籍支持,以及wxRuby,它基于wxWidgets C++ GUI框架。


2
作为一个wxperl程序员,我知道wxruby也存在。wx非常快速,并具有真正的跨平台外观和感觉。

wxRuby自2009年以来已经停止更新。 - Nakilon

1

我不确定Ruby,但你提到了Mono/C# -- 我最近使用了很多Mono和GTK#,非常印象深刻。它似乎相当稳定,跨平台可移植性也很好。


1

Ruby/GNOME2 很不错。您可以使用 Glade 拖放窗口元素并从 Ruby 应用程序中加载 UI。


0

我强烈支持Qt进行跨平台GUI开发。它非常棒,API非常直观。由于使用底层操作系统提供的GUI控件,因此Qt的GUI外观和感觉几乎与本地应用程序相同。

虽然基本接口是C++,但也有其他语言绑定可用。例如,RubyQt适用于Ruby,但不幸的是它还非常不成熟。


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接