热门问题
时间线
聊天
视角

GTK

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

GTK
Remove ads

GTK(原名GTK+)最初是GIMP的專用開發庫(GIMP Toolkit),後來發展為Unix-like系統下開發圖形界面的應用程序的主流開發工具之一。GTK是自由軟件,並且是GNU計劃的一部分。自2019年2月6日起,GTK+改名為GTK。[4]

事实速览 原作者, 開發者 ...
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個廢棄的部件。[5] GTK是用C語言編寫的一個面向對象部件工具;它使用GObject,即GLib對象系統,來實現面向對象。雖然GTK主要是為基於X11Wayland的窗口系統設計的,但它也可以在其他平台上運行,包括Microsoft Windows(與Windows API接口),和macOS(與Quartz接口)。還有一個名為Broadway的HTML5後端。[6][7]

GTK可以配置不同的顯示引擎來改變繪製部件的外觀。有幾種顯示引擎可以模仿所使用平台上的原生部件的外觀。

從2005年發布的版本2.8開始,GTK開始使用Cairo渲染大多數圖形控制元素(部件)。[8]自從GTK版本3.0開始,所有的渲染都是使用Cairo完成的。[9]

在2018年1月26日的DevConf.cz上,GTK重要開發者Matthias Clasen介紹了GTK 4開發的當前狀態,包括對GTK 3中渲染和輸入工作方式的高層次解釋,GTK 4 (>3.90)中正在進行的變化以及原因。[10]在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中引入。[11][12] GtkInspector只能在安裝了開發包libgtk-3-dev/gtk±devel後調用。

GUI設計器

有幾個GUI設計器可用於GTK。以下項目截至2011年7月仍在活躍:

  • Glade,支持GtkBuilder,這是一個GTK內置的GUI描述格式。
  • Gazpacho,用Python[13]編寫的GTK工具包的GUI構建器
  • Crow Designer,依賴於它自己的GuiXml格式和GuiLoader庫。[14]
  • 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