热门问题
时间线
聊天
视角

GTK

用來製作圖形化使用者介面的跨平台部件工具箱 来自维基百科,自由的百科全书

GTK
Remove ads

GTK(原名GTK+)最初是GIMP的专用开发库(GIMP Toolkit),后来发展为Unix-like系统下开发图形界面的应用程序的主流开发工具之一。GTK是自由软件,并且是GNU计划的一部分。自2019年2月6日起,GTK+改名为GTK。[3]

事实速览 原作者, 开发者 ...
Remove ads

软件架构

Thumb
GTK工具包
Thumb
GTK的简化软件架构。Pango, GDK, ATK, GIO, CairoGLib
Thumb
GDK包含了对X11, Wayland, Broadway (HTTP), Quartz, 和 GDI的后端,并依赖于Cairo进行渲染。它的新SceneGraph还在开发中。

GTK 包含了一组图形控制元素(部件);版本3.22.16包含了186个活跃的和36个废弃的部件。[4] GTK是用C语言编写的一个面向对象部件工具;它使用GObject,即GLib对象系统,来实现面向对象。虽然GTK主要是为基于X11Wayland的窗口系统设计的,但它也可以在其他平台上运行,包括Microsoft Windows(与Windows API接口),和macOS(与Quartz接口)。还有一个名为Broadway的HTML5后端。[5][6]

GTK可以配置不同的显示引擎来改变绘制部件的外观。有几种显示引擎可以模仿所使用平台上的原生部件的外观。

从2005年发布的版本2.8开始,GTK开始使用Cairo渲染大多数图形控制元素(部件)。[7]自从GTK版本3.0开始,所有的渲染都是使用Cairo完成的。[8]

在2018年1月26日的DevConf.cz上,GTK重要开发者Matthias Clasen介绍了GTK 4开发的当前状态,包括对GTK 3中渲染和输入工作方式的高层次解释,GTK 4 (>3.90)中正在进行的变化以及原因。[9]在2019年2月6日,宣布GTK 4将从项目名称中去掉“+”号。

Remove ads

GTK绘图工具包(GDK)

GDK是对底层窗口系统和图形系统提供的低级函数的封装。

GTK场景图工具包(GSK)

GSK是GTK的渲染和场景图API。GSK位于图形控制元素(部件)和渲染之间。GSK最终在2017年3月发布的GTK版本3.90中合并。

GtkInspector

GtkInspector在版本3.14中引入。[10][11] GtkInspector只能在安装了开发包libgtk-3-dev/gtk±devel后调用。

GUI设计器

有几个GUI设计器可用于GTK。以下项目截至2011年7月仍在活跃:

  • Glade,支持GtkBuilder,这是一个GTK内置的GUI描述格式。
  • Gazpacho,用Python[12]编写的GTK工具包的GUI构建器
  • Crow Designer,依赖于它自己的GuiXml格式和GuiLoader库。[13]
  • Stetic,作为MonoDevelop的一部分,面向Gtk#
  • Gambas自版本2.0开始基于BASIC
  • XojoLinux
  • Lazarus在Linux上默认与GTK 2接口

GtkBuilder

GtkBuilder允许在不编写代码的情况下设计用户界面。界面在XML文件中描述,然后在运行时加载并自动创建对象。Glade界面设计器允许以“所见即所得”(WYSIWYG)的方式创建用户界面。用户界面的描述与使用的编程语言无关。

编程语言

GTK使用C语言开发,但是其设计者使用面向对象技术。也提供了ValaC++gtkmm)、PerlRubyJavaPython(PyGObject)绑定,其他的绑定有AdaDHaskellPHP和所有的.NET编程语言。

与其他很多部件工具箱不同,GTK并不基于Xt。这一决策优劣互见:优点是GTK可以应用于其他系统,其灵活性也很强;而缺点就是它无法利用以传统方法为X11定制的X资源数据库。GTK最早应用于X Window System,如今已移植至其他平台,诸如Microsoft WindowsDirectFB,以及Mac OS X平台上的Quartz.

Glade是一个界面设计工具,但是它也包含了一种描述GUI界面的XML语言,它和libglade一起工作就可以直接使用GTK和GNOME控件;新的Glade-3不再直接支持生成编程语言源代码

外观和视觉

提供不同的显示引擎使得最终用户可以定制外观和视觉。目前已经有一些可以模仿其他流行的平台或者工具箱(例如Windows 95MotifQt或者NEXTSTEP)的引擎。

Thumb
运行在Xfce4上的GIMP 2.0的快照

使用

使用GTK的环境
  • GNOME是以GTK为基础,就是说为GNOME编写的程序使用GTK做为其工具箱。
  • Xfce也基于GTK,但是它的应用程序并不对很多其他程序有依赖。(这就是"GNOME程序"和"GTK程序"的不同。)
  • LXDE也基于GTK,一个尽可能减少包相依性的桌面环境。
  • GPE Palmtop环境和Nokia互联网平板电脑的框架Maemo基于GTK。

这只是一部分,另外,GTK也可以运行在KDE的环境下。而且GTK也可以在Microsoft Windows运行,另外还有DirectFBncurses

使用GTK的窗口管理器

GTK应用程序

以下程序都是使用GTK开发、属于开源软件,可以运行于Linux/UnixWindowsmacOS等多种操作系统平台上。

  • Firefox-Mozilla基金会的网页浏览器,在Linux下使用GTK。
  • Geany-代码编辑器
  • GIMP-类似于Photoshop的图像处理程序
  • Inkscape-类似于IllustratorCorelDraw的矢量图形绘制工具
  • Pidgin-支持多种协议(IRC、Gtalk、Yahoo Talk、MSN等等)的聊天工具
  • gcin-一种在Linux、Windows系统上常见的输入法平台

版本历史

更多信息 主要版本, 发布日期 ...
Remove ads

图形无关代码

最初GTK包括一些和图形无关的常规功能,如链表二叉树数据结构。这些基本功能和对象系统GObject已经合并到独立的Glib,它被程序员专门用于开发不需要图形界面的代码。

GTK 2

2002年3月11日,GTK2.0版正式发布。GTK 2是GTK后继版本,其新特性包括使用Pango改进的文本渲染、新主题引擎、使用ATK改进的可达性、完全转换到使用UTF-8Unicode和更灵活的API。但是它和GTK 1不完全兼容,因此必须由程序员做移植工作。由于GTK 1更快、相对更简单或更加适合嵌入式应用,所以还被继续使用。

从GTK 2的2.8版起,它依靠程序库Cairo完成渲染,而这引入了矢量图形的支持。

发展

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函数库的问题。

参见

参考资料

外部链接

Loading related searches...

Wikiwand - on

Seamless Wikipedia browsing. On steroids.

Remove ads