GTK+
Code:
/* compile with: gcc <filename> `pkg-config --cflags --libs gtk+-2.0` */
#include <gtk/gtk.h>
#include <string.h>
GtkWidget *window, *vbox, *label, *entry, *button;
static void close(GtkWidget *widget, gpointer data)
{
gtk_main_quit();
}
static void okay_click(GtkWidget *widget, gpointer data)
{
char msg[256];
memset(&msg[0], '\0', 256);
snprintf(&msg[0], 256, "Hello, %s! Welcome to Ubuntu!", \
gtk_entry_get_text(GTK_ENTRY(entry)));
gtk_label_set_text(GTK_LABEL(label), msg);
}
void init_widgets()
{
window = gtk_window_new(GTK_WINDOW_TOPLEVEL);
vbox = gtk_vbox_new(TRUE, 0);
label = gtk_label_new("Hi, What's your name?");
entry = gtk_entry_new();
button = gtk_button_new_with_label("Okay");
g_signal_connect(G_OBJECT(button), "clicked", \
G_CALLBACK(okay_click), NULL);
g_signal_connect(G_OBJECT(window), "destroy", \
G_CALLBACK(close), NULL);
gtk_box_pack_start(GTK_BOX(vbox), label, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), entry, TRUE, TRUE, 0);
gtk_box_pack_start(GTK_BOX(vbox), button, TRUE, TRUE, 0);
gtk_container_add(GTK_CONTAINER(window), vbox);
gtk_widget_show(label);
gtk_widget_show(entry);
gtk_widget_show(button);
gtk_widget_show(vbox);
gtk_widget_show(window);
}
int main(int argc, char **argv)
{
gtk_init(&argc, &argv);
init_widgets();
gtk_main();
return 0;
}
PyGTK
Code:
#!/usr/bin/env python
import pygtk
pygtk.require('2.0')
import gtk
class HelloWorld:
def close(self, widget, event, data=None):
gtk.main_quit()
def okay_click(self, widget, data=None):
self.label.set_text("Hello, " + self.entry.get_text() + "! Welcome to Ubuntu!")
def __init__(self):
self.window = gtk.Window(gtk.WINDOW_TOPLEVEL)
self.vbox = gtk.VBox(False, 0)
self.label = gtk.Label("Hi, What's your name?")
self.entry = gtk.Entry(20)
self.button = gtk.Button("Okay")
self.button.connect("clicked", self.okay_click)
self.window.connect("delete_event", self.close)
self.vbox.pack_start(self.label, True, True, 0)
self.vbox.pack_start(self.entry, True, True, 0)
self.vbox.pack_start(self.button, True, True, 0)
self.window.add(self.vbox)
self.label.show()
self.entry.show()
self.button.show()
self.vbox.show()
self.window.show()
if __name__ == "__main__":
HelloWorld()
gtk.main()
Ruby/GTK2
Code:
#!/usr/bin/env ruby
require('gtk2')
class HelloWorld
def initialize
@window = Gtk::Window.new
@vbox = Gtk::VBox.new
@label = Gtk::Label.new("Hi, What's your name?")
@entry = Gtk::Entry.new
@button = Gtk::Button.new("Okay")
@button.signal_connect("clicked") {
@label.set_text("Hello, #{@entry.text}! Welcome to Ubuntu!")
}
@window.signal_connect("delete_event") { Gtk.main_quit }
@vbox.pack_start(@label, true, true, 0)
@vbox.pack_start(@entry, true, true, 0)
@vbox.pack_start(@button, true, true, 0)
@window.add(@vbox)
@label.show
@entry.show
@button.show
@vbox.show
@window.show
end
end
HelloWorld.new
Gtk.main
Bookmarks