最来自初,GTK+ 是作为另一个著名的开放源码项目 -- GNU Image Manipulation Program (GIMP) -- 的副产品而创建的。在开发早期的 GIMP 版本时,Peter Mattis 和 S360百科pencer Kimball 创建了 GTK(它代表 GIMP Toolkit),作为 Motif 工具包的替代,后者在那个时候不是免费的。蒸证变按语来音总(当这个工具包获得了面向对象特性和可扩展性之后,才在名称后面加上了一个加号。)
- 外文名称 GTK+
- 开发者 GNOME基金会
- 稳定版本 v3.12.0 / 2014年3月25日
- 预览版本 v3.11.9 / 2014年3月18日
- 开发状态 执行中
简介
GTK(Gnome Toolkit)是一套跨多种平台的图形工具包,按LGPL许可协议发布的。虽然最初是为GIMP写的,但早已发展为一个功能强大、设计灵活的通用图形库。特别是被GNOME选中使得GTK+广为流传,成为Linux下开发图形界面的应用程序的主流开发工具之一,当然GTK+并不要求必须在Linux上,事实上,序烈女伤亮济督目前GTK+已经有了成功的windows版本。
GTK+虽然是用C语言写的,但是您可以使用你熟悉的语言来使用GTK+,因为GTK+已经来自被绑定到几乎所有流行的语言上,如:C++, Gui白静聚换川亚什买刑le, Perl, Python, TOM, Ada95, Objective C, Free Pascal, Eiffel等。
特点介绍
权该想护米慢心就春季进 使用 GTK+ 这样的库比起编写自己的 GUI 代码来有多360百科个优势。例如,它可以显著节约开立居既活剧顶量建慢曲发时间,让开发人员把精力集中在项目真正重要和真正独特的宪地方,而不必重复公共的功能。对于用户来说,这意味着他们使用的应用我年序阿个针球家利城晶程序之间具有更好的一致性:工具包能在哪使用,应用提于叫举是庆杀是程序就能跟到哪里。就像使用 LEGO 一样,所有的换酒编己部士书画正重人都使用同一兼容尺寸这一事实,意味着设计可以在使用库的人之间共享,不论他们在哪里使用它。
在现实中,现代的 GUI 工具包做的工作不仅仅是避免重复。它们提供了许多高级功能,用户希望在他们的应用程序中拥有这些功能,但是用别的方法得不到这些功能,因为在这类工具包上所投入城措被财显的时间和工作,要远远超过在单一应用程序上的花费。所以,如果在应用程序中使用 GUI 对您来说很重要,那么请职轻杂南好烟脚使用工具包。除此之外别无何钱围衡营统外注雨且他法。那么,剩下的惟一问题就是,应当使用哪个工具包?
优势
两按散航草组流列明不论开发的需要是什么,GTK+ 可能就是您正在寻找的答案全多。GTK+ 提供了许多东西来自:
它既现代,而且得到了积极的开发与维护,围绕它有一个充满活力的社区。
它提供了广泛的选项,用于把工作扩展到牛服材尽可能多的人,其中包括一个针对国际化、本地化和可没访问性的完善的框架。
它简单易用,对开发人员和用户来说都是这样。
它的设计良好、灵活而可扩展。
它是自由软件,有一个自由的开放井育批衡挥厂小源码许可。
它是可移植的,从用户和开发人员的角度都是这样。
设计良好、灵活和可扩展
编写 GTK+ 的方式允许在不扭曲基本设计的情况下,让维护人员添加新功能、让用户利用新功能。工具包也是可扩展的,这意味着可以向其中添加自己的块,并用使用内置块一样的方式使用它们。例如,可以编写自己的控制元素,比如说用于显示应用程序处理的科学数据,并让它正确地遵照用户选择的显示风格,就像 GTK+ 自身的控件那样。
更进一步,GTK+ 是可定制的,这样就可以让它适应自己的需求。GTK+ 有一个系统,可以在所有应用程序之间复制设置,包括主题的选择。主题 是一组一同发布的定制设置,会影响 GTK+ 使用的概转病老基本控件看起来的效果,甚至某种程度上的行为方式。使用主步命室题,可以(例如)模拟另一个操作系统的观感。
带有自由开360百科放源码许可的自由软件
自由软件 意味着每个人不仅可以自由地获得和使用胜务华这负笑药女这个工具包,还可以在满足某些条件的情况下修改并重新发布它。自由开放源码许可 意味着这些条件不是严格限制的,可以得到的自由程度是显著的。最重要的是,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+ 对于开发人员也易于使用。它允许开发人员用简单的方式说出自己想要的东西,不会用所谓正规方式给开发人员带来负担,这些正规方式是计算机为了弥补它们固有的缺乏想像力的缺陷而施加给人类的负担。
版本
主要版本 | 发布日期 | 主要增强 | 最后次要版本 |
---|---|---|---|
1.0 | 1998年4月14日 | 第一个稳定版本 | 1.0.6 |
1.2 | 1999年2月27日 | 新增部件(GtkFontSelector、GtkPacker、GtkItemFactory、GtkCTree、GtkInvisible、GtkCalendar、GtkLayout、GtkPlug、GtkSocket) | 1.2.10 |
2.0 | 2002年3月11日 | GObject, Unicode(UTF-8)支援 | 2.0.9 |
2.2 | 2002年12月22日 | Multihead support | 2.2.4 |
2.4 | 2004年3月16日 | 新增部件(GtkFileChooser、GtkComboBox、GtkComboBoxEntry、GtkExpander、GtkFontButton、GtkColorButton) | 2.4.14 |
2.6 | 2004年12月16日 | New widgets (GtkIconView, GtkAboutDialog, GtkCellView). 最后一个支援Windows 98/Me的版本 | 2.6.10 |
2.8 | 2005年8月13日 | Cairo integration | 2.8.20 |
2.10 | 2006年7月3日 | 新增部件(GtkStatusIcon、GtkAssistant、GtkLinkButton、GtkRecentChooser)以及列印支援(GtkPrintOperation) | 2.10.14 |
2.12 | 2007年9月14日 | GtkBuilder | 2.12.12 |
2.14 | 2008年9月4日 | Jpeg2000 load support | 2.14.7 |
2.16 | 2009年3月13日 | New GtkOrientable, Caps Lock warning in password Entry. Improvement on GtkScale, GtkStatusIcon, GtkFileChooser. | 2.16.6 |
2.18 | 2009年9月23日 | New GtkInfoBar. Improvement on file chooser, printing. GDK has been rewritten to use 'client-side windows' | 2.18.9 |
2.20 | 2010年3月23日 | New GtkSpinner and GtkToolPalette, GtkOffscreenWindow. Improvement on file chooser, keyboard handling, GDK.Introspection data is now included in GTK+ | 2.20.1 |
2.22 | 2010年9月23日 | gdk-pixbuf moved to separate module, most GDK drawing are based on Cairo, many internal data are now private and can be sealed in preparation to GTK+3 | 2.22.1 |
2.24 | 2011年1月30日 | New simple combo box widget (GtkComboBoxText) added, the cups print backend can send print jobs as PDF, GtkBuilder has gained support for text tags and menu toolbuttons and many introspection annotation fixes were added | 2.24.0 |
3.0 | 2011年2月10日 | Cairo, more X11 agnostic, XInput2, CSS-based theme API | 3.0.0 |