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.
In order to run examples, we need to install PHP-CLI, PHP-GTK and Cairo for PHP.
The following are required packages:
This section was an introduction to the GTK library with the PHP 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-CLI, PHP-GTK and Cairo for PHP.
Installation
At the time of writing this tutorial, there are issues installing PHP-GTK on Linux. (Installing Cairo for PHP will be explained in the chapter dedicated to painting with Cairo.)The following are required packages:
build-essential subversion php5-cli php5-dev libgtk2.0-dev libglade2-devIf you are not having one of these, they must be installed.
svn co http://svn.php.net/repository/gtk/php-gtk/trunk php-gtkNow download the sources from the subversion tree. Do not use the source tarballs. These instructions work for sources from the subversion repository.
./buildconf ./configure make sudo make installThese are commands used to build PHP-GTK. However, we will probably have issues during the process. This is due to past libtool changes.
./configure: line 11641: LTOPTIONS_VERSION: command not found ./configure: line 11642: LTSUGAR_VERSION: command not found ./configure: line 11643: LTVERSION_VERSION: command not found ./configure: line 11644: LTOBSOLETE_VERSION: command not founThe configure script gives error messages.
$ pwd /home/vronskij/Downloads/php-gtk $ cat /usr/share/aclocal/ltoptions.m4 /usr/share/aclocal/ltversion.m4 \ /usr/share/aclocal/ltsugar.m4 /usr/share/aclocal/lt~obsolete.m4 >> aclocal.m4Now inside the build directory, we issue the above command. We will have a new file aclocal.m4 in our directory. (Tip found on ubuntuforums.org.) Hopefully, now the configure script will run.
extension=php_gtk2.soThe final step is to edit php.ini file and add the above line under the Dynamic Extensions section.
Simple 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 /* ZetCode PHP GTK tutorial This program centers a window on the screen. author: Jan Bodnar website: www.zetcode.com last modified: September 2011 */ 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 a Tooltip
The second 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 /* ZetCode PHP GTK tutorial This code shows a tooltip on a window and a button. author: Jan Bodnar website: www.zetcode.com last modified: September 2011 */ 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
$this
variable.
$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
Quit button
In the last example of this section, we will create a quit button. When we press this button, the application terminates.<?php /* ZetCode PHP GTK tutorial This program creates a quit button. When we press the button, the application terminates. author: Jan Bodnar website: www.zetcode.com last modified: September 2011 */ 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.
This section was an introduction to the GTK library with the PHP language.
No comments:
Post a Comment