跳转至

PHP GTK 简介

原文: 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。)

以下是必需的包:

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(); 

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

Simple

图:简单

创建工具提示

第二个示例将显示一个工具提示。 工具提示是一个小的矩形窗口,它提供有关对象的简短信息。 它通常是一个 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()(显示容器及其所有子代)。

Tooltips

图:工具提示 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 = 50y = 50的固定容器中。

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



回到顶部