热门问题
时间线
聊天
视角

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