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

Gre*_*ers 5 language-agnostic user-interface

据我所知,所有GUI工具包基本上都是相同的。

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

据我所知,大多数与每个单独工具箱的语言绑定或多或少都是API的字面翻译。在我看来,这似乎使任何编程语言都和其他语言一样具有生产力。

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

是否有与该模型完全不同的GUI库?

当有人尝试进行GUI编程时,您会建议如何在GUI工具箱之间进行选择-甚至哪个工具箱真的重要吗?哪种编程语言通常最容易开发GUI应用程序-还是应该坚持我所知道的?

Bob*_*toe 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 上使用 WinForms(或者如果有人想迂腐的话,可以使用 Gnome/KDE)。您可以在 Windows 上使用 GTK+,但“小部件”的外观和感觉与本机 Windows 工具包所提供的不同。您可以选择 Swing,但它实际上只能在 Java 中使用,并且有其自身的问题。我个人认为 Swing 的生产力水平并不高。我认为必须添加所有这些“适配器”和所有这些“布局”的连接并不是那么高效。但有些人确实这样做。

另一个方面是您选择的工具包所包含的内置小部件的选择以及第三方免费和商业小部件中的选择。如果您选择一个更不起眼的工具包,您将不会有那么多奇特的小部件可供选择。例如,您会发现一个适用于 .NET WinForms 的 Mac OS X 风格的“dock”小部件,可能还有其他一些小部件,但可能不在 GTK+ 中(实际上,它可能存在于那里,但这只是示例)。

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