PHP GTK 简介
在 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
./configure
make
sudo 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 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
像素的窗口。
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 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();
?>
该示例创建一个窗口。 如果将鼠标指针悬停在窗口区域上方,则会弹出一个工具提示。
$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 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();
?>
示例的源代码。
$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 库。