更新时间:2023-06-14 09:54
最初,GTK+ 是作为另一个著名的开放源码项目 —— GNU Image Manipulation Program (GIMP) —— 的副产品而创建的。在开发早期的 GIMP 版本时,Peter Mattis 和 Spencer Kimball 创建了 GTK(它代表 GIMP Toolkit),作为 Motif 工具包的替代,后者在那个时候不是免费的。(当这个工具包获得了面向对象特性和可扩展性之后,才在名称后面加上了一个加号。)
GTK(Gnome Toolkit)是一套跨多种平台的图形工具包,按LGPL许可协议发布的。虽然最初是为GIMP写的,但早已发展为一个功能强大、设计灵活的通用图形库。特别是被GNOME选中使得GTK+广为流传,成为Linux下开发图形界面的应用程序的主流开发工具之一,当然GTK+并不要求必须在Linux上,事实上,目前GTK+已经有了成功的windows版本。
GTK+虽然是用C语言写的,但是您可以使用你熟悉的语言来使用GTK+,因为GTK+已经被绑定到几乎所有流行的语言上,如:C++, Guile, Perl, Python, TOM, Ada95, Objective C, Free Pascal, Eiffel等。
使用 GTK+ 这样的库比起编写自己的 GUI 代码来有多个优势。例如,它可以显著节约开发时间,让开发人员把精力集中在项目真正重要和真正独特的地方,而不必重复公共的功能。对于用户来说,这意味着他们使用的应用程序之间具有更好的一致性:工具包能在哪使用,应用程序就能跟到哪里。就像使用 LEGO 一样,所有的人都使用同一兼容尺寸这一事实,意味着设计可以在使用库的人之间共享,不论他们在哪里使用它。
在现实中,现代的 GUI 工具包做的工作不仅仅是避免重复。它们提供了许多高级功能,用户希望在他们的应用程序中拥有这些功能,但是用别的方法得不到这些功能,因为在这类工具包上所投入的时间和工作,要远远超过在单一应用程序上的花费。所以,如果在应用程序中使用 GUI 对您来说很重要,那么请使用工具包。除此之外别无他法。那么,剩下的惟一问题就是,应当使用哪个工具包?
不论开发的需要是什么,GTK+ 可能就是您正在寻找的答案。GTK+ 提供了许多东西:
它既现代,而且得到了积极的开发与维护,围绕它有一个充满活力的社区。
它提供了广泛的选项,用于把工作扩展到尽可能多的人,其中包括一个针对国际化、本地化和可访问性的完善的框架。
它简单易用,对开发人员和用户来说都是这样。
它的设计良好、灵活而可扩展。
它是可移植的,从用户和开发人员的角度都是这样。
设计良好、灵活和可扩展
编写 GTK+ 的方式允许在不扭曲基本设计的情况下,让维护人员添加新功能、让用户利用新功能。工具包也是可扩展的,这意味着可以向其中添加自己的块,并用使用内置块一样的方式使用它们。例如,可以编写自己的控制元素,比如说用于显示应用程序处理的科学数据,并让它正确地遵照用户选择的显示风格,就像 GTK+ 自身的控件那样。
更进一步,GTK+ 是可定制的,这样就可以让它适应自己的需求。GTK+ 有一个系统,可以在所有应用程序之间复制设置,包括主题的选择。主题 是一组一同发布的定制设置,会影响 GTK+ 使用的基本控件看起来的效果,甚至某种程度上的行为方式。使用主题,可以(例如)模拟另一个操作系统的观感。
带有自由开放源码许可的自由软件
自由软件 意味着每个人不仅可以自由地获得和使用这个工具包,还可以在满足某些条件的情况下修改并重新发布它。自由开放源码许可 意味着这些条件不是严格限制的,可以得到的自由程度是显著的。最重要的是,GTK+ 采用了 Lesser General Public License (LGPL) 许可,这是 GNU 许可家族中一个不太严格的许可。LGPL 允许自由地获取、修改和发布它覆盖的任何软件,只要对修改也保持自由即可。LGPL 还允许任何人使用该库提供的功能,而不 要求用户公开应用程序代码。(这对于许多工业应用来说很重要,因为由于以前的协议或许可,这种场合下一般不希望公开代码或者公开代码是显然不现实的。)使用 LGPL 许可,您既可以是开放源码社区的好伙伴也可以是好公民。
可移植
最后(但并不是最不重要),GTK+ 是可移植的。这意味着用户可以在许多平台和系统上运行它。另一方面,开发人员可以把软件提供给众多用户,却只要编写一次程序,还可以使用许多不同的编程和开发平台、工具和编程语言。所有这些都可以理解为更多的潜在用户,您可以利用更好地满足需求的更广泛的技能和工具。
所有这些优势组合在一起,让 GTK+ 成为软件开发的坚实基础。有了它,就能够把注意力集中在解决实际问题上,而不必重新发明轮子,而且您也可以确信创建的应用程序会按照用户预期的方式运作、解决他们的问题,而不必创建新的应用程序。
现代的且开发积极的工具包
GTK+ 是采用软件开发中的最新技术开发的,只要发现缺陷(肯定有缺陷,因为没有任何软件是完美的),开发人员就会尽力在下一版本中修补缺陷。使用现代的软件意味着,您不会陷在过时的工作中,而跟不上时代的发展。
持续的维护和开发也意味着您拥有影响工具包的未来发展方向的能力。另外,在出现新的发行版时,会引入基于用户反馈的新特性和新功能,而旧的问题则得到修补。
国际化、本地化和可访问性
在创建要让所有人使用的软件的时候,请记住三个关键字:国际化、本地化和可访问性(通常分别缩写为 i18n、l10n 和 a11y)。
国际化 是将程序准备为被母语不是开发应用程序所采用的语言的人使用的过程,所以应用程序不依赖于对任何特定语言的任何假设。
i18n 远远不只是对程序使用的文本进行翻译。它还意味着要考虑所使用的不同脚本和字母表、不同的编写方向、显示许多语言所需要的特殊处理以及为用户提供输入文本的适当方法。不是每种语言都可以简单地把每个字母映射到键盘上的不同键,而且还必须实现更好的复杂性,例如确保在错误消息中使用正确的复数。
本地化 与 i18n 密切相关,因为为国际用户准备应用程序不仅仅是改变语言。程序还必须能够理解并尊重日期、货币显示、数字标注、文本排序所使用的不同习惯,以及许多可能不太注意的细节之处 —— 例如有些符号的使用,在世界的不同地方可能会被认为是不恰当的或无礼的。
正像 i18n,正确的 l10n 要求在代码中添加很多东西,而这些是事后很难轻松加入的。GTK+ 提供了针对 i18n 和 l10n 的恰当工具,会让代码(和二进制)可以在许多语言和地域上不加修改地运行。切换地域所需要的就是随操作系统(针对 l10n)或者一个可独立于实际的程序进行处理和发布的翻译文件(针对 i18n)一起发布的一组数据。带来的灵活性会得到开发人员、翻译者和用户的热爱。
可访问性
是让每个人都可以使用您的程序。有些用户的视力不佳,有些人可能不能用键盘或鼠标,而有些人可能只能移动他们的眼睛。要确保每个想使用您的应用程序的用户都能使用,需要做许多工作。幸运的是,GTK+ 提供了一个途径,可以通过一个完善的预先存在的 a11y 框架,立即得到这方面的支持,而您这边几乎什么工作也不需要做。使用这个框架(它是 UNIX® 系统上的事实标准),可以把应用程序带给各类用户。
您也能享受 a11y 的许多优势 —— 例如执行自动 GUI 测试的能力。通过让特殊需求用户运行的可访问性软件可以使用您的应用程序,您也可以让测试软件可以访问它,例如,检查行为是否正确 —— 这在传统的 GUI 编程中会带来严重的问题。
以上三点可能是使用工具包的充足理由 —— 特别是 GTK+,它在这三个领域都有优秀的支持。这个支持绝不完美,但在同类软件中是最好的,而且把这些关键字整合进应用程序的重要性并没有提到应有高度。在今天的世界中,计算机无处不在,用户众多而且独特,所以不能认为一个遗漏一整群用户的应用程序是一个完整的产品。
简单易用
这一点应当很明显,但是它实际上含义丰富。工具包对用户应当容易,这样才有可能创建简单的、直觉的和乐于使用的界面,哪怕针对的是新手。创建人机交互的正确模型不是一项简单的任务,GTK+ 正是长时间工作的结果,而且是众多的甚至困难的决策的结果。
GTK+ 对于开发人员也易于使用。它允许开发人员用简单的方式说出自己想要的东西,不会用所谓正规方式给开发人员带来负担,这些正规方式是计算机为了弥补它们固有的缺乏想像力的缺陷而施加给人类的负担。