GTK+ 示例/GTK+/Hello World
外觀
這個小型教程演示瞭如何建立一個帶有單個按鈕的簡單視窗。當按鈕被點選時,按鈕上的標籤內容將被列印到標準輸出。
標籤被包裝到按鈕中,按鈕又被包裝到視窗中。
首先,您必須包含 gtk 標頭檔案。
#include<gtk/gtk.h>
接下來,定義了兩個**回撥函式**原型,一個用於關閉視窗,另一個用於點選按鈕。回撥函式基本上是呼叫由低階程式碼(在本例中是 GTK 本身)透過傳遞函式地址呼叫的函式。
static gint delete_callback(GtkWidget* w, GdkEventAny* e, gpointer data);
static void button_callback(GtkWidget* w ,gpointer data);
#include<gtk/gtk.h>
static gint delete_callback(GtkWidget* w, GdkEventAny* e, gpointer data);
static void button_callback(GtkWidget* w ,gpointer data);
int main(int argc, char* argv[])
{
GtkWidget* window;
GtkWidget* button;
GtkWidget* label;
gtk_init(&argc, &argv);
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
button = gtk_button_new();
label = gtk_label_new("Hello World");
gtk_container_add(GTK_CONTAINER(button),label);
gtk_container_add(GTK_CONTAINER(window), button);
gtk_window_set_title(GTK_WINDOW(window), " Hello World");
gtk_container_set_border_width(GTK_CONTAINER(button),10);
gtk_window_set_default_size(GTK_WINDOW(window),400,400);
gtk_signal_connect(GTK_OBJECT(window),
"delete_event",
GTK_SIGNAL_FUNC(delete_callback),
NULL);
gtk_signal_connect(GTK_OBJECT(button),
"clicked",
GTK_SIGNAL_FUNC(button_callback),
label);
gtk_widget_show_all(window);
gtk_main();
return 0;
}
static gint delete_callback(GtkWidget* w, GdkEventAny* e, gpointer data)
{
gtk_main_quit();
}
static void button_callback(GtkWidget* w ,gpointer data)
{
GtkWidget* label;
gchar* text;
label = GTK_WIDGET(data);
gtk_label_get(GTK_LABEL(label), &text);
printf("%s \n", text);
}
#!/usr/bin/perl
use Gtk2 "-init";
use warnings;
use strict;
my $window = new Gtk2::Window;
my $button = new Gtk2::Button('Reset');
$window->add($button);
$window->set_title("Hello, world!");
$button->set_border_width(10);
$window->set_default_size(400,400);
$window->signal_connect("delete_event", \&delete_callback);
$button->signal_connect("clicked", \&button_callback);
$window->show_all;
Gtk2->main;
sub delete_callback{
Gtk2->main_quit;
}
sub button_callback{
my $label = $button->get_child;
$label->set_text ("Support your local bakery");
$window->show_all;
}
module Main where
import Graphics.UI.Gtk
main :: IO ()
main = do
initGUI
window ← windowNew
button ← buttonNewWithLabel "Reset"
set window [windowTitle := "Hello",
windowDefaultWidth := 400,
windowDefaultHeight := 400,
containerChild := button]
set button [containerBorderWidth := 10]
onClicked button $ buttonSetLabel button "Support your local pâtisserie"
onDestroy window mainQuit
widgetShowAll window
mainGUI