代码之家  ›  专栏  ›  技术社区  ›  Greg Rogers

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

  •  5
  • Greg Rogers  · 技术社区  · 16 年前

    • 小部件 其他所有可以绘制的内容都继承自。
    • 它们都有基本相同的小部件——窗口、滚动条、按钮、对话框、文件选择器、绘图区、菜单、容器等。
    • 它们都使用具有“主循环”的事件驱动架构,通过应用程序注册的回调来响应用户事件。
    • 大多数都有某种“GUI构建器”程序(GTK+的Glade)。

    GUI工具包,如GTK+或FLTK。

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

    1 回复  |  直到 16 年前
        1
  •  2
  •   BobbyShaftoe    16 年前

    你写这个问题的时候,好像你从未使用过这些工具包。我真的不确定这里真正的问题是什么。你用过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的生产力水平不高。我认为必须添加所有这些“适配器”和连接——所有这些“布局”——并不是那么高效。然而,有些人确实如此。

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

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