不同的GUI工具包和语言绑定有什么区别?

时间:2009-02-20 05:51:18

标签: user-interface language-agnostic

据我所知,所有GUI工具包基本相同。

  • 他们都有某种基础 Widget ,其他所有可以绘制的内容都来自。
  • 它们都有基本相同的小部件 - 窗口,滚动条,按钮,对话框,FileSelector,DrawingArea,菜单,容器等。
  • 他们都使用事件驱动架构和“主循环”,通过应用程序注册的回调响应用户事件。
  • 大多数都有某种“GUI-builder”程序(ala Glade for GTK +)。

据我所知,对每个工具包的大多数语言绑定或多或少都是API的字面翻译。这使我觉得任何编程语言都会像其他编程语言一样高效。

有些工具包不仅仅是一个GUI工具包,而是一个“应用程序框架”,例如wxWidgets。他们为其他东西添加API,如网络,数据结构,日志记录,线程和数据库访问。考虑到大多数其他东西通常都有更好的库来访问您需要的功能,似乎在决定工具包之间并不是特别重要。事实上,如果您知道已经涵盖了这些内容,那么选择一个简单的工具包并且知道它只是 GUI工具包(如GTK +或FLTK)将是有益的。

那里的GUI库是否与这种模式截然不同?

当有人试图进入GUI编程时,你会如何建议在GUI工具包之间进行选择 - 或者它真的与哪一个有关?什么编程语言最容易开发GUI应用程序 - 或者我应该坚持我所知道的?

1 个答案:

答案 0 :(得分:2)

您正在撰写此问题,就好像您从未使用过这些工具包一样。我不确定这里的实际问题是什么。你有没有用过Swing?这看起来与.NET WinForms API的生产力水平相同吗?真的,任何关于这些的说法都会导致一场火焰战或一系列的挫折。有区别。当然,有很多相似之处。其中很多与您在事件驱动的GUI编程环境中需要的许多基本结构有关,例如消息循环。当然,可能有很多其他方法可以做到,但这是一种经过验证的方法。

我不知道有什么“从根本上”打破了这一点。可能是我所知道的用于通用GUI应用程序的最不同的GUI库来自REBOL及其VIEW:

http://www.rebol.com/docs/view-guide.html

然而,实际上它并非“根本”不同。

生产力的一个重大差异是这些不同工具包的工具具有非常不同的成熟度。你有点问两个问题。一个问题更具理论性:“这些工具包中的任何一个从根本上是不同的吗?”另一个是关于生产力,那就是“各种工具包的生产力水平是否存在差异?”第一个问题非常值得商榷。第二个问题有明确答案:是的。

有很多问题要问。首先,您将使用哪种编程语言或平台?您是否需要可移植到Windows,Mac OS X和Linux等不同平台?它只是Windows还是Linux?显然,你不想在Linux(或Gnome / KDE,如果有人想要迂腐)上使用WinForms。您可以在Windows上使用GTK +,但“小部件”与原生Windows工具包提供的外观和感觉不同。您可以选择Swing,但它实际上只能在Java中使用并且有自己的问题。我个人并不认为Swing的生产力水平很高。我认为必须添加所有这些“适配器”和连接所有这些“布局”gook并不那么有效。有些人会这样做。

另一个方面是选择您选择的工具包所包含的内置小部件以及第三方免费和商业小部件的选择。如果你选择一个更加模糊的工具包,你就不会有那么多异国情调的小工具可供选择。例如,你会发现一个适用于.NET WinForms的Mac OS X风格“停靠”小部件,可能还有其他一些但可能不在GTK +中(实际上,它可能存在于那里,但它只是一个例子)。

所以,简而言之,我认为你不能说所有的GUI工具包都可以互换。还有许多其他问题需要考虑,而不是它们是否具有基本小部件和消息循环。