GTK
(原名)最初是GIMP的专用开发库(),后来发展为Unix-like系統下开发图形界面的应用程序的主流开发工具之一。GTK是自由软件,并且是GNU计划的一部分。自2019年2月6日起,GTK+改名为GTK。[2]
gtk3-widget-factory是展示GTK +版本3中許多GUI小控件示例的集合 | |
原作者 | Spencer Kimball、Peter Mattis、eXperimental Computing Facility |
---|---|
開發者 | GNOME計劃 |
初始版本 | 1998年4月14日 |
穩定版本 | 4.1.0(2021年1月31日[±] | )
源代码库 | |
编程语言 | C语言[1] |
操作系统 | Linux、类Unix系统、macOS、Microsoft Windows |
类型 | 部件工具箱 |
许可协议 | GNU宽通用公共许可证2.1 |
网站 | gtk |
编程语言
GTK使用C语言开发,但是其设计者使用面向对象技术。也提供了C++(gtkmm)、Perl、Ruby、Java和Python(PyGTK)绑定,其他的绑定有Ada、D、Haskell、PHP和所有的.NET编程语言。
与其他很多部件工具箱不同,GTK并不基于Xt。这一决策优劣互见:优点是GTK可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为X11定制的X资源数据库。GTK最早應用於X Window System,如今已移植至其他平台,諸如Microsoft Windows、DirectFB,以及Mac OS X平台上的Quartz.
Glade是一个界面设计工具,但是它也包含了一种描述GUI界面的XML语言,它和libglade一起工作就可以直接使用GTK和GNOME控件;新的Glade-3不再直接支持生成编程语言源代码。
使用
- 使用GTK的環境
- GNOME是以GTK為基礎,就是說為GNOME編寫的程式使用GTK做為其工具箱。
- Xfce也基於GTK,但是它的應用程式並不對很多其他程式有依賴。(這就是"GNOME程式"和"GTK程式"的不同。)
- LXDE也基於GTK,一個盡可能減少套件相依性的桌面環境。
- GPE Palmtop環境和Nokia的互聯網平板電腦的框架Maemo基於GTK。
這只是一部分,另外,GTK也可以運行在KDE的環境下。而且GTK也可以在Microsoft Windows運行,另外還有DirectFB和ncurses。
- 使用GTK的窗口管理器
- Metacity和Xfwm4使用GTK 2.
版本歷史
主要版本 | 發佈日期 | 主要增強 | 最後次要版本 |
---|---|---|---|
1.0 页面存档备份,存于 | 1998年4月14日 | 第一個穩定版本 | 1.0.6 |
1.2 页面存档备份,存于 | 1999年2月27日 | 新增部件(GtkFontSelector、 |
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 GTK3 |
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 页面存档备份,存于 |
GTK 2
2002年3月11日,GTK2.0版正式发布。GTK 2是GTK后继版本,其新特性包括使用Pango改进的文本渲染、新主题引擎、使用ATK改进的可达性、完全转换到使用UTF-8的Unicode和更灵活的API。但是它和GTK 1不完全兼容,因此必须由程序员做移植工作。由于GTK 1更快、相对更简单或更加适合嵌入式应用,所以还被继续使用。
发展
Ridley项目正在尝试统一一系列和GTK相关的库,包括libgnome、libgnomeui、libgnomeprint、libgnomeprintui、libglade、libgnomecanvas、libegg、libeel和gtkglext。
GTK hello world
GTK hello world以C撰写,本程序含有窗口,标题是"Hello, World".
#include <gtk/gtk.h>
int main (int argc, char *argv[])
{
GtkWidget *window;
GtkWidget *label;
gtk_init (&argc, &argv);
/* create the main, top level, window */
window = gtk_window_new (GTK_WINDOW_TOPLEVEL);
/* give it the title */
gtk_window_set_title (GTK_WINDOW (window), "Hello World");
/* Connect the destroy signal of the window to gtk_main_quit
* When the window is about to be destroyed we get a notification and
* stop the main GTK loop
*/
g_signal_connect (window, "destroy",
G_CALLBACK (gtk_main_quit), NULL);
/* Create the "Hello, World" label */
label = gtk_label_new ("Hello, World");
/* and insert it into the main window */
gtk_container_add (GTK_CONTAINER (window), label);
/* make sure that everything, window and label, are visible */
gtk_widget_show_all (window);
/* start the main loop, and let it rest there until the application is closed */
gtk_main ();
return 0;
}
GTK Runtime Environment for Windows
由於GTK主要是作為Unix-like系統底下的介面,在Windows使用該系統所開發的軟體時就需要用到GTK執行環境,即GTK Runtime Environment for Windows。這個軟體與GTK不同的地方在於它僅僅是為了執行軟體用途而製作,以解決Windows沒有內建GTK函式庫的問題。