原文: http://zetcode.com/gui/phpgtktutorial/introduction/

在 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。)

以下是必需的包:

  1. build-essential subversion php5-cli php5-dev libgtk2.0-dev libglade2-dev

如果您没有这些之一,则必须安装它们。

  1. svn co http://svn.php.net/repository/gtk/php-gtk/trunk php-gtk

现在,从 Subversion 树中下载源代码。 不要使用源压缩文件。 这些说明适用于 Subversion 仓库中的源。

  1. ./buildconf
  2. ./configure
  3. make
  4. sudo make install

这些是用于构建 PHP-GTK 的命令。 但是,在此过程中我们可能会遇到问题。 这是由于过去 libtool 的更改。

  1. ./configure: line 11641: LTOPTIONS_VERSION: command not found
  2. ./configure: line 11642: LTSUGAR_VERSION: command not found
  3. ./configure: line 11643: LTVERSION_VERSION: command not found
  4. ./configure: line 11644: LTOBSOLETE_VERSION: command not foun

配置脚本给出错误消息。

  1. $ pwd
  2. /home/vronskij/Downloads/php-gtk
  3. $ cat /usr/share/aclocal/ltoptions.m4 /usr/share/aclocal/ltversion.m4 \
  4. /usr/share/aclocal/ltsugar.m4 /usr/share/aclocal/lt~obsolete.m4 >> aclocal.m4

现在在构建目录中,发出上面的命令。 我们的目录中将有一个新文件aclocal.m4。 (可在 ubuntuforums.org 上找到提示。)希望现在可以运行配置脚本。

  1. extension=php_gtk2.so

最后一步是编辑php.ini文件,并将以上行添加到“动态扩展”部分下。

简单的例子

既然我们已经成功安装了 PHP-GTK 库,我们可以从一个小例子开始。 在此示例中,我们创建一个简单的窗口。 窗口在屏幕上居中。

  1. <?php
  2. /*
  3. ZetCode PHP GTK tutorial
  4. This program centers a window on
  5. the screen.
  6. author: Jan Bodnar
  7. website: www.zetcode.com
  8. last modified: September 2011
  9. */
  10. class Example extends GtkWindow {
  11. public function __construct() {
  12. parent::__construct();
  13. $this->set_title('Simple');
  14. $this->set_default_size(250, 150);
  15. $this->connect_simple('destroy', array('gtk', 'main_quit'));
  16. $this->set_position(GTK::WIN_POS_CENTER);
  17. $this->show();
  18. }
  19. }
  20. new Example();
  21. Gtk::main();
  22. ?>

本示例在屏幕中央显示一个250x150像素的窗口。

  1. class Example extends GtkWindow {

Example类基于GtkWindow小部件。

  1. $this->set_title('Simple');

set_title()方法设置窗口的标题。

  1. $this->set_default_size(250, 150);

此行设置窗口的大小。 它将是 250px 宽和 150px 高。

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

在这里,我们将destroy信号连接到回调。 main_quit()方法永久退出该应用。 单击标题栏中的关闭按钮,或按 Alt + F4 时,会发出破坏信号。

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

这条线使窗口在屏幕上居中。

  1. $this->show();

一切准备就绪后,我们在屏幕上显示窗口。

  1. new Example();
  2. Gtk::main();

我们设置了应用。 创建无限循环。 从这一点开始,应用就坐下来,等待用户或系统的外部事件。 循环一直运行到终止为止。

PHP GTK 简介 - 图1

图:简单

创建工具提示

第二个示例将显示一个工具提示。 工具提示是一个小的矩形窗口,它提供有关对象的简短信息。 它通常是一个 GUI 组件。 它是应用帮助系统的一部分。

  1. <?php
  2. /*
  3. ZetCode PHP GTK tutorial
  4. This code shows a tooltip on
  5. a window and a button.
  6. author: Jan Bodnar
  7. website: www.zetcode.com
  8. last modified: September 2011
  9. */
  10. class Example extends GtkWindow {
  11. public function __construct() {
  12. parent::__construct();
  13. $this->init_ui();
  14. }
  15. public function init_ui() {
  16. $this->set_title('Tooltips');
  17. $this->connect_simple('destroy', array('gtk', 'main_quit'));
  18. $fixed = new GtkFixed();
  19. $this->add($fixed);
  20. $button = new GtkButton("Button");
  21. $button->set_size_request(80, 35);
  22. $button->set_tooltip_text("Button widget");
  23. $fixed->put($button, 50, 50);
  24. $this->set_tooltip_text("Window widget");
  25. $this->set_default_size(250, 150);
  26. $this->set_position(GTK::WIN_POS_CENTER);
  27. $this->show_all();
  28. }
  29. }
  30. new Example();
  31. Gtk::main();
  32. ?>

该示例创建一个窗口。 如果将鼠标指针悬停在窗口区域上方,则会弹出一个工具提示。

  1. $this->init_ui();

接口的创建委托给init_ui()方法。

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

GtkFixed是一个容器窗口小部件,用于将窗口小部件定位在绝对坐标上。 第二行将此容器设置为示例的GtkWindow。 一扇窗口有一个中央容器。

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

我们使用set_tooltip_text()方法设置按钮的工具提示。

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

我们为窗口设置工具提示。 通过$this变量访问该窗口。

  1. $this->show_all();

当窗口上有多个小部件时,我们有两个选择。 在所有小部件上调用show(),或调用show_all()(显示容器及其所有子代)。

PHP GTK 简介 - 图2

图:工具提示 s

退出按钮

在本节的最后一个示例中,我们将创建一个退出按钮。 当我们按下此按钮时,应用终止。

  1. <?php
  2. /*
  3. ZetCode PHP GTK tutorial
  4. This program creates a quit
  5. button. When we press the button,
  6. the application terminates.
  7. author: Jan Bodnar
  8. website: www.zetcode.com
  9. last modified: September 2011
  10. */
  11. class Example extends GtkWindow {
  12. public function __construct() {
  13. parent::__construct();
  14. $this->init_ui();
  15. }
  16. public function init_ui() {
  17. $this->set_title('Quit button');
  18. $this->connect_simple('destroy', array('gtk', 'main_quit'));
  19. $fixed = new GtkFixed();
  20. $this->add($fixed);
  21. $button = new GtkButton("Quit");
  22. $button->set_size_request(80, 35);
  23. $button->connect_simple('clicked', array('gtk', 'main_quit'));
  24. $fixed->put($button, 50, 50);
  25. $this->set_default_size(250, 150);
  26. $this->set_position(GTK::WIN_POS_CENTER);
  27. $this->show_all();
  28. }
  29. }
  30. new Example();
  31. Gtk::main();
  32. ?>

示例的源代码。

  1. $button = new GtkButton("Quit");

在这里,我们创建一个按钮小部件。 构造器的参数是按钮的标签。

  1. $button->set_size_request(80, 35);

我们设置按钮的大小。

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

我们将main_quit()方法插入按钮点击信号。

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

我们将退出按钮放入x = 50y = 50的固定容器中。

本节介绍了使用 PHP 语言的 GTK 库。