🔥码云GVP开源项目 12k star Uniapp+ElementUI 功能强大 支持多语言、二开方便! 广告
# PHP GTK 简介 > 原文: [http://zetcode.com/gui/phpgtktutorial/introduction/](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](http://gtk.php.net/) 上。 在那里我们找到了参考文档。 为了运行示例,我们需要安装 PHP-CLI,PHP-GTK 和用于 PHP 的 Cairo。 ## 安装 在撰写本教程时,在 Linux 上安装 PHP-GTK 存在问题。 (将在专门介绍用 Cairo 进行绘图的章节中说明为 PHP 安装 Cairo。) 以下是必需的包: ```php build-essential subversion php5-cli php5-dev libgtk2.0-dev libglade2-dev ``` 如果您没有这些之一,则必须安装它们。 ```php svn co http://svn.php.net/repository/gtk/php-gtk/trunk php-gtk ``` 现在,从 Subversion 树中下载源代码。 不要使用源压缩文件。 这些说明适用于 Subversion 仓库中的源。 ```php ./buildconf ./configure make sudo make install ``` 这些是用于构建 PHP-GTK 的命令。 但是,在此过程中我们可能会遇到问题。 这是由于过去 libtool 的更改。 ```php ./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 ``` 配置脚本给出错误消息。 ```php $ 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](http://ubuntuforums.org/showthread.php?t=1377395) 上找到提示。)希望现在可以运行配置脚本。 ```php extension=php_gtk2.so ``` 最后一步是编辑`php.ini`文件,并将以上行添加到“动态扩展”部分下。 ## 简单的例子 既然我们已经成功安装了 PHP-GTK 库,我们可以从一个小例子开始。 在此示例中,我们创建一个简单的窗口。 窗口在屏幕上居中。 ```php <?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(); ?> ``` 本示例在屏幕中央显示一个`250x150`像素的窗口。 ```php class Example extends GtkWindow { ``` `Example`类基于`GtkWindow`小部件。 ```php $this->set_title('Simple'); ``` `set_title()`方法设置窗口的标题。 ```php $this->set_default_size(250, 150); ``` 此行设置窗口的大小。 它将是 250px 宽和 150px 高。 ```php $this->connect_simple('destroy', array('gtk', 'main_quit')); ``` 在这里,我们将`destroy`信号连接到回调。 `main_quit()`方法永久退出该应用。 单击标题栏中的关闭按钮,或按 `Alt + F4` 时,会发出破坏信号。 ```php $this->set_position(GTK::WIN_POS_CENTER); ``` 这条线使窗口在屏幕上居中。 ```php $this->show(); ``` 一切准备就绪后,我们在屏幕上显示窗口。 ```php new Example(); Gtk::main(); ``` 我们设置了应用。 创建无限循环。 从这一点开始,应用就坐下来,等待用户或系统的外部事件。 循环一直运行到终止为止。 ![Simple](https://img.kancloud.cn/bb/d8/bbd8b5389ceda0fb3ad91a82353314cc_258x178.jpg) 图:简单 ## 创建工具提示 第二个示例将显示一个工具提示。 工具提示是一个小的矩形窗口,它提供有关对象的简短信息。 它通常是一个 GUI 组件。 它是应用帮助系统的一部分。 ```php <?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(); ?> ``` 该示例创建一个窗口。 如果将鼠标指针悬停在窗口区域上方,则会弹出一个工具提示。 ```php $this->init_ui(); ``` 接口的创建委托给`init_ui()`方法。 ```php $fixed = new GtkFixed(); $this->add($fixed); ``` `GtkFixed`是一个容器窗口小部件,用于将窗口小部件定位在绝对坐标上。 第二行将此容器设置为示例的`GtkWindow`。 一扇窗口有一个中央容器。 ```php $button->set_tooltip_text("Button widget"); ``` 我们使用`set_tooltip_text()`方法设置按钮的工具提示。 ```php $this->set_tooltip_text("Window widget"); ``` 我们为窗口设置工具提示。 通过`$this`变量访问该窗口。 ```php $this->show_all(); ``` 当窗口上有多个小部件时,我们有两个选择。 在所有小部件上调用`show()`,或调用`show_all()`(显示容器及其所有子代)。 ![Tooltips](https://img.kancloud.cn/ef/4d/ef4de1d65cffe87687eca0b134b1821a_258x178.jpg) 图:工具提示 s ## 退出按钮 在本节的最后一个示例中,我们将创建一个退出按钮。 当我们按下此按钮时,应用终止。 ```php <?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(); ?> ``` 示例的源代码。 ```php $button = new GtkButton("Quit"); ``` 在这里,我们创建一个按钮小部件。 构造器的参数是按钮的标签。 ```php $button->set_size_request(80, 35); ``` 我们设置按钮的大小。 ```php $button->connect_simple('clicked', array('gtk', 'main_quit')); ``` 我们将`main_quit()`方法插入按钮点击信号。 ```php $fixed->put($button, 50, 50); ``` 我们将退出按钮放入`x = 50`,`y = 50`的固定容器中。 本节介绍了使用 PHP 语言的 GTK 库。