Introduction to PHP GTK

|
What is GTK?
The GTK is a library for creating graphical user interfaces. The library is created in C programming language. The GTK library is also called the GIMP Toolkit. Originally, the library was created while developing the GIMP image manipulation program. Since then, the GTK became one of the most popular toolkits under Linux and BSD Unix. Today, most of the GUI software in the open source world is created in Qt or in GTK. Language bindings exist for C++, Python, PHP, Perl, Java, C# and other programming languages.


Introduction to PHP GTK
In this part of the PHP GTK programming tutorial, we will introduce the GTK library and create our first programs using the PHP programming language.

The purpose of this tutorial is to get you started with the GTK and PHP. GTK is one of the leading toolkits for creating graphical user interfaces. PHP is a highly popular scripting language used in server-side web development. It can be also used to create command line scripts via PHP CLI, PHP Command Line Interface.

PHP-GTK
PHP-GTK is a language binding for PHP to write GTK applications. PHP-GTK provides an object-oriented interface to GTK classes and functions. The home page for the project is at gtk.php.net. There we find a reference documentation.

In order to run examples, we need to install  PHP-GTK.



Following Examples Based on Linux Operating System

Simple window example
Now that we have successfully installed the PHP-GTK library, we can start with a small example. In this example, we create a simple window. The window is centered on the screen.
<?php
/* 

PHP GTK tutorials
website: http://phpgtktutorials.blogspot.in/

*/

class Example extends GtkWindow { 
     

    public function __construct() { 

        parent::__construct(); 
         

        $this->set_title('Simple'); 
        $this->set_default_size(250, 150); 

        $this->connect_simple('destroy', array('gtk', 'main_quit')); 

        $this->set_position(GTK::WIN_POS_CENTER);
        $this->show(); 
    } 
} 
     
new Example(); 
Gtk::main(); 
?>


This example shows a 250x150 px window in the center of the screen.

class Example extends GtkWindow { 

The Example class is based on the GtkWindow widget.

$this->set_title('Simple'); 

The set_title() method sets a title for the window.

$this->set_default_size(250, 150); 

This line sets a size of the window. It is going to be 250px wide and 150px high.

$this->connect_simple('destroy', array('gtk', 'main_quit')); 

Here we connect the destroy signal to a callback. The main_quit() method quits the application for good. The destroy signal is emitted, when we click on the close button in the titlebar. Or press Alt + F4.

$this->set_position(GTK::WIN_POS_CENTER);

This line centers the window on the screen.

$this->show();

When everything is ready, we show the window on the screen.

new Example(); 
Gtk::main(); 

We set up the application. An infinite loop is created. From this point the application sits and waits for external events from the user or the system. The loop runs until it is terminated.

Figure: Simple



Creating Tooltip example
This example will show a tooltip. A tooltip is a small rectangular window, which gives a brief information about an object. It is usually a GUI component. It is part of the help system of the application.


<?php
/* 

PHP GTK tutorials
website: http://phpgtktutorials.blogspot.in/

*/

class Example extends GtkWindow { 
     

    public function __construct() { 

        parent::__construct(); 
         
        $this->init_ui();

    } 

    public function init_ui() {

        $this->set_title('Tooltips');         
        $this->connect_simple('destroy', array('gtk', 'main_quit')); 

        $fixed = new GtkFixed();
        $this->add($fixed);

        $button = new GtkButton("Button");
        $button->set_size_request(80, 35);
        $button->set_tooltip_text("Button widget");

        $fixed->put($button, 50, 50);
        
        $this->set_tooltip_text("Window widget");

        $this->set_default_size(250, 150); 
        $this->set_position(GTK::WIN_POS_CENTER);
        $this->show_all();         
    }
} 
     
new Example(); 
Gtk::main();
?>
The example creates a window. If we hover a mouse pointer over the area of the window, a tooltip pops up.

$this->init_ui();

The creation of the interface is delegated to the init_ui() method.

$fixed = new GtkFixed();
$this->add($fixed);

The GtkFixed is a container widget, that is used to position widgets at absolute coordinates. The second line sets this container for the GtkWindow of the example. A window has one central container.

$button->set_tooltip_text("Button widget");

We set the button's tooltip with the set_tooltip_text() method.

$this->set_tooltip_text("Window widget");

We set a tooltip for the window. The window is accessed through the $thisvariable.

$this->show_all(); 

When there are multiple widgets on the window, we have two options. Either to call show() on all widgets, or to call show_all(), which shows the container and all its children.

Figure: Tooltips

Creating Quit Button example
In the last example of this section, we will create a quit button. When we press this button, the application terminates.
<?php
class Example extends GtkWindow { 
     

    public function __construct() { 

        parent::__construct(); 
         
        $this->init_ui();

    } 

    public function init_ui() {

        $this->set_title('Quit button');         
        $this->connect_simple('destroy', array('gtk', 'main_quit')); 

        $fixed = new GtkFixed();
        $this->add($fixed);

        $button = new GtkButton("Quit");
        $button->set_size_request(80, 35);
        $button->connect_simple('clicked', array('gtk', 'main_quit'));

        $fixed->put($button, 50, 50);
                
        $this->set_default_size(250, 150); 
        $this->set_position(GTK::WIN_POS_CENTER);
        $this->show_all();         
    }
} 
     
new Example(); 
Gtk::main();
?>
Source code of the example.

$button = new GtkButton("Quit");

Here we create a button widget. The parameter of the constructor is the button's label.

$button->set_size_request(80, 35);

We set a size for the button.

$button->connect_simple('clicked', array('gtk', 'main_quit'));

We plug the main_quit() method to the button clicked signal.

$fixed->put($button, 50, 50);

We put the quit button into the fixed container at x=50, y=50.

0 comments:

Post a Comment