在 PHP GTK 编程教程的这一部分中,我们将介绍 GTK 库并使用 PHP 编程语言创建第一个程序。
本教程的目的是使您开始使用 GTK 和 PHP。 GTK 是用于创建图形用户界面的领先工具包之一。 PHP 是服务器端 Web 开发中使用的非常流行的脚本语言。 它也可以用于通过 PHP CLI,PHP 命令行界面创建命令行脚本。
PHP-GTK
PHP-GTK 是 PHP 编写 GTK 应用的语言绑定。 PHP-GTK 为 GTK 类和函数提供了一个面向对象的接口。 该项目的主页位于 gtk.php.net 上。 在那里我们找到了参考文档。
为了运行示例,我们需要安装 PHP-CLI,PHP-GTK 和用于 PHP 的 Cairo。
安装
在撰写本教程时,在 Linux 上安装 PHP-GTK 存在问题。 (将在专门介绍用 Cairo 进行绘图的章节中说明为 PHP 安装 Cairo。)
以下是必需的包:
build-essential subversion php5-cli php5-dev libgtk2.0-dev libglade2-dev
如果您没有这些之一,则必须安装它们。
svn co http://svn.php.net/repository/gtk/php-gtk/trunk php-gtk
现在,从 Subversion 树中下载源代码。 不要使用源压缩文件。 这些说明适用于 Subversion 仓库中的源。
./buildconf./configuremakesudo make install
这些是用于构建 PHP-GTK 的命令。 但是,在此过程中我们可能会遇到问题。 这是由于过去 libtool 的更改。
./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 foun
配置脚本给出错误消息。
$ 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.m4
现在在构建目录中,发出上面的命令。 我们的目录中将有一个新文件aclocal.m4。 (可在 ubuntuforums.org 上找到提示。)希望现在可以运行配置脚本。
extension=php_gtk2.so
最后一步是编辑php.ini文件,并将以上行添加到“动态扩展”部分下。
简单的例子
既然我们已经成功安装了 PHP-GTK 库,我们可以从一个小例子开始。 在此示例中,我们创建一个简单的窗口。 窗口在屏幕上居中。
<?php/*ZetCode PHP GTK tutorialThis program centers a window onthe screen.author: Jan Bodnarwebsite: www.zetcode.comlast 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();?>
本示例在屏幕中央显示一个250x150像素的窗口。
class Example extends GtkWindow {
Example类基于GtkWindow小部件。
$this->set_title('Simple');
set_title()方法设置窗口的标题。
$this->set_default_size(250, 150);
此行设置窗口的大小。 它将是 250px 宽和 150px 高。
$this->connect_simple('destroy', array('gtk', 'main_quit'));
在这里,我们将destroy信号连接到回调。 main_quit()方法永久退出该应用。 单击标题栏中的关闭按钮,或按 Alt + F4 时,会发出破坏信号。
$this->set_position(GTK::WIN_POS_CENTER);
这条线使窗口在屏幕上居中。
$this->show();
一切准备就绪后,我们在屏幕上显示窗口。
new Example();Gtk::main();
我们设置了应用。 创建无限循环。 从这一点开始,应用就坐下来,等待用户或系统的外部事件。 循环一直运行到终止为止。

图:简单
创建工具提示
第二个示例将显示一个工具提示。 工具提示是一个小的矩形窗口,它提供有关对象的简短信息。 它通常是一个 GUI 组件。 它是应用帮助系统的一部分。
<?php/*ZetCode PHP GTK tutorialThis code shows a tooltip ona window and a button.author: Jan Bodnarwebsite: www.zetcode.comlast 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();?>
该示例创建一个窗口。 如果将鼠标指针悬停在窗口区域上方,则会弹出一个工具提示。
$this->init_ui();
接口的创建委托给init_ui()方法。
$fixed = new GtkFixed();$this->add($fixed);
GtkFixed是一个容器窗口小部件,用于将窗口小部件定位在绝对坐标上。 第二行将此容器设置为示例的GtkWindow。 一扇窗口有一个中央容器。
$button->set_tooltip_text("Button widget");
我们使用set_tooltip_text()方法设置按钮的工具提示。
$this->set_tooltip_text("Window widget");
我们为窗口设置工具提示。 通过$this变量访问该窗口。
$this->show_all();
当窗口上有多个小部件时,我们有两个选择。 在所有小部件上调用show(),或调用show_all()(显示容器及其所有子代)。

图:工具提示 s
退出按钮
在本节的最后一个示例中,我们将创建一个退出按钮。 当我们按下此按钮时,应用终止。
<?php/*ZetCode PHP GTK tutorialThis program creates a quitbutton. When we press the button,the application terminates.author: Jan Bodnarwebsite: www.zetcode.comlast 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();?>
示例的源代码。
$button = new GtkButton("Quit");
在这里,我们创建一个按钮小部件。 构造器的参数是按钮的标签。
$button->set_size_request(80, 35);
我们设置按钮的大小。
$button->connect_simple('clicked', array('gtk', 'main_quit'));
我们将main_quit()方法插入按钮点击信号。
$fixed->put($button, 50, 50);
我们将退出按钮放入x = 50,y = 50的固定容器中。
本节介绍了使用 PHP 语言的 GTK 库。
