利用 EasyGTK 进行轻松 GUI 编程
时间:2007-02-17 来源:PHP爱好者
具有完整 GUI 工具箱可扩展功能的快捷方式的好处
Patrick Lambert
IT 顾问和自由专栏作家
内容:
更简单 GUI 的轻松开始
开始使用 EasyGTK
分析样本代码
扩展成果
参考资料
关于作者
Gimp Toolkit (GTK+) 是一个免费工具箱,可以用于创建完美的用户界面。EasyGTK 是一个将调用转换成 GTK+ 的封装库,从而大大节省了掌握 GTK+ 需要付出的精力和时间。本文仔细分析了一小段 EasyGTK 代码,用以说明如何创建简单的应用程序,并提供了对使用此工具箱的一些建议。
“图形用户界面 (GUI)”工具箱在 Linux 中已经存在了许多年。从 Xlib、XT 和 Motif 开始,它们就提供了一个 API,这个 API 可以使在 Linux 上创建漂亮的图形程序变得更容易。它们都附带了一个说明如何使用这些库来创建程序的文档。最近,在 Linux GUI 世界中,一个新的库成为了主流:GTK+。Gimp Toolkit (GTK+) 可以创建非常精致的程序,而且它是免费的,这就使它在 Linux 开发人员之中非常流行。然而,它有一个常见问题,就是学习如何使用该库来创建程序需要花费很长时间。让我们进入 EasyGTK。
更简单 GUI 的轻松开始
从技术角度来看,这个库是一个封装库。这意味着开发人员使用 EasyGTK C API 来创建软件,而它将调用转换成 GTK+ 库。一个普通的 EasyGTK 命令可以实现 5 到 10 个 GTK+ 函数所实现的功能。这就意味着使用 EasyGTK 调用创建程序不仅更容易,而且更快。
开始使用 EasyGTK
让我们看一下基本命令,做好开始使用这个库的准备。如同其它 Linux 程序一样,EasyGTK 也需要经过编译和安装。它应该在标准 Linux 发行版上运行。安装之后,就可以使用静态库来编译您自己的程序,如同其它库一样。附带的文档中有如何使用 EasyGTK 编译程序的完整描述,以及一个命令列表。为了继续讨论这个库,让我们看一下简单程序源代码:
基本代码样本 #include "easygtk.h"
GtkWidget *win, *box, *text, *button;
void main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
win e_window_create("Hello World", 400, 200, 100, 100, exit);
box e_box_create(win, E_VERTICAL, 2);
text e_text_create(box, FALSE, "Hello World!", E_NO_FUNC);
button e_button_create(box, "Close", exit);
gtk_main();
}
分析样本代码
这个 EasyGTK 小程序如果用 GTK+ 进行编码,可能会有大约 30 行。现在,让我们逐行研究这个代码的功能。第一行告诉编译器要包括这个库附带的文件 easygtk.h,该文件包括了所有 EasyGTK 命令的定义。
下一行是程序中使用的窗口小部件的声明。窗口小部件是表示诸如窗口、按钮、文本标签或布局框之类的图形组件的变量。在 main 函数中,我们必须先启动 GTK+ 引擎,然后只要创建窗口小部件。所有 EasyGTK 命令都以 "e" 开头。第一个 EasyGTK 命令创建了一个窗口。关于所有 EasyGTK 函数都使用什么参数,请参考库文档。例如,e_window_create() 函数将在位置 100x100 处创建一个 400 像素乘以 200 像素的窗口,其标题是 "Hello World",如果用户关闭此窗口,则会调用函数 exit()。
使用这个库时应该要知道如何在窗口中放置窗口小部件或组件。一旦创建了窗口,就必须在其中放置框。有 2 种框:垂直框和水平框。如果想要将文本标签和按钮上下放置,那么可以使用垂直框,将标签和按钮添加到该框,它们将按您期望的方式显示。假设您希望标签位于窗口顶部,2 个按钮并排放置在窗口底部。那么可以先使用垂直框,然后使用水平框。添加了所需的框之后,就可以向它添加任何窗口小部件,甚至添加其它框。
接着的两个命令创建了一个文本区和用于关闭此窗口的按钮。经过编译之后,这个应用程序并没有太多功能,它仅是一个示例。在这个 main C 函数的结尾是启动 main GTK+ 循环的命令。这将把我带入事件和循环。在 GTK+ 或 EasyGTK 应用程序中,只能在 gtk_main() 启动的 main 循环中检测到用户操作。添加了组成应用程序的所有窗口小部件后,就需要使用该函数来启动循环。然后程序进行循环并等待用户操作。如果用户执行了某些操作(例如,单击按钮),那么循环将停止,控制将交给指定的函数,在本例中是用于退出程序的 exit()。
扩展成果
这个示例演示了如何创建非常简单的应用程序,但您可以添加更复杂的组件。EasyGTK 有超过 50 个函数可供使用。我建议您尝试一下库附带的示例源文件。还可以在同一个应用程序中混合 EasyGTK 和纯 GTK+ 命令。
目前,EasyGTK 支持 GTK+ 版本 1.2,这是大多数 Linux 发行版附带的版本。它还包含了需要使用 Imlib、ImageMagick 和 GNOME 的函数。然而,您可以在不支持这些库的情况下编译此库,而且不需要安装它们以便使用 EasyGTK。据我所知,这个库还可以在其它 UNIX 系统(如 Sun Solaris)上工作。
有关 EasyGTK,最后需要注意的是其源代码在 GPL 许可证的规定下公开,也就是说可以定制函数以使它符合您的需要。例如,如果使用这个库来创建许多窗口,但又希望窗口不显示关闭按钮,那么可以修改此库的源代码本身来实现这个目的。这个库就是轻松编码和使应用程序创建更快速的一种方式。
参考资料
请下载 EasyGTK 库。
请下载 GTK+ 库。
请阅读 GNOME 成员 George Lebl 在 developerWorks 上发表的介绍使用 GNOME 库编程的系列文章:入门、构建样本程序和使用 libxml。George 的网站上有关于 Linux 和 GNOME 的详细信息。
请访问专用于 GNOME 应用程序开发者的站点。它包含了 API 参考大全、教程、白皮书和其它有帮助的信息。
可用的 GNOME 应用编程教程。
请尝试 gtk.org 的 GTK+ 教程。
访问 RedHat 的 RHAD 实验室,那里有许多正在进行的 GNOME/GTK+ 开发
查看 GIMP,它是 GTK+ 的发源地
关于作者
Patrick Lambert 是一位 IT 顾问和自由专栏作家。他撰写了关于计算问题和因特网的文章。他是微软认证专家 (MCP) 和认证 A+ 技术专家。可通过 [email protected] 与他联系。
php爱好者站 http://www.phpfans.net 网页制作|网站建设|数据采集.
Patrick Lambert
IT 顾问和自由专栏作家
内容:
更简单 GUI 的轻松开始
开始使用 EasyGTK
分析样本代码
扩展成果
参考资料
关于作者
Gimp Toolkit (GTK+) 是一个免费工具箱,可以用于创建完美的用户界面。EasyGTK 是一个将调用转换成 GTK+ 的封装库,从而大大节省了掌握 GTK+ 需要付出的精力和时间。本文仔细分析了一小段 EasyGTK 代码,用以说明如何创建简单的应用程序,并提供了对使用此工具箱的一些建议。
“图形用户界面 (GUI)”工具箱在 Linux 中已经存在了许多年。从 Xlib、XT 和 Motif 开始,它们就提供了一个 API,这个 API 可以使在 Linux 上创建漂亮的图形程序变得更容易。它们都附带了一个说明如何使用这些库来创建程序的文档。最近,在 Linux GUI 世界中,一个新的库成为了主流:GTK+。Gimp Toolkit (GTK+) 可以创建非常精致的程序,而且它是免费的,这就使它在 Linux 开发人员之中非常流行。然而,它有一个常见问题,就是学习如何使用该库来创建程序需要花费很长时间。让我们进入 EasyGTK。
更简单 GUI 的轻松开始
从技术角度来看,这个库是一个封装库。这意味着开发人员使用 EasyGTK C API 来创建软件,而它将调用转换成 GTK+ 库。一个普通的 EasyGTK 命令可以实现 5 到 10 个 GTK+ 函数所实现的功能。这就意味着使用 EasyGTK 调用创建程序不仅更容易,而且更快。
开始使用 EasyGTK
让我们看一下基本命令,做好开始使用这个库的准备。如同其它 Linux 程序一样,EasyGTK 也需要经过编译和安装。它应该在标准 Linux 发行版上运行。安装之后,就可以使用静态库来编译您自己的程序,如同其它库一样。附带的文档中有如何使用 EasyGTK 编译程序的完整描述,以及一个命令列表。为了继续讨论这个库,让我们看一下简单程序源代码:
基本代码样本 #include "easygtk.h"
GtkWidget *win, *box, *text, *button;
void main(int argc, char *argv[])
{
gtk_init(&argc, &argv);
win e_window_create("Hello World", 400, 200, 100, 100, exit);
box e_box_create(win, E_VERTICAL, 2);
text e_text_create(box, FALSE, "Hello World!", E_NO_FUNC);
button e_button_create(box, "Close", exit);
gtk_main();
}
分析样本代码
这个 EasyGTK 小程序如果用 GTK+ 进行编码,可能会有大约 30 行。现在,让我们逐行研究这个代码的功能。第一行告诉编译器要包括这个库附带的文件 easygtk.h,该文件包括了所有 EasyGTK 命令的定义。
下一行是程序中使用的窗口小部件的声明。窗口小部件是表示诸如窗口、按钮、文本标签或布局框之类的图形组件的变量。在 main 函数中,我们必须先启动 GTK+ 引擎,然后只要创建窗口小部件。所有 EasyGTK 命令都以 "e" 开头。第一个 EasyGTK 命令创建了一个窗口。关于所有 EasyGTK 函数都使用什么参数,请参考库文档。例如,e_window_create() 函数将在位置 100x100 处创建一个 400 像素乘以 200 像素的窗口,其标题是 "Hello World",如果用户关闭此窗口,则会调用函数 exit()。
使用这个库时应该要知道如何在窗口中放置窗口小部件或组件。一旦创建了窗口,就必须在其中放置框。有 2 种框:垂直框和水平框。如果想要将文本标签和按钮上下放置,那么可以使用垂直框,将标签和按钮添加到该框,它们将按您期望的方式显示。假设您希望标签位于窗口顶部,2 个按钮并排放置在窗口底部。那么可以先使用垂直框,然后使用水平框。添加了所需的框之后,就可以向它添加任何窗口小部件,甚至添加其它框。
接着的两个命令创建了一个文本区和用于关闭此窗口的按钮。经过编译之后,这个应用程序并没有太多功能,它仅是一个示例。在这个 main C 函数的结尾是启动 main GTK+ 循环的命令。这将把我带入事件和循环。在 GTK+ 或 EasyGTK 应用程序中,只能在 gtk_main() 启动的 main 循环中检测到用户操作。添加了组成应用程序的所有窗口小部件后,就需要使用该函数来启动循环。然后程序进行循环并等待用户操作。如果用户执行了某些操作(例如,单击按钮),那么循环将停止,控制将交给指定的函数,在本例中是用于退出程序的 exit()。
扩展成果
这个示例演示了如何创建非常简单的应用程序,但您可以添加更复杂的组件。EasyGTK 有超过 50 个函数可供使用。我建议您尝试一下库附带的示例源文件。还可以在同一个应用程序中混合 EasyGTK 和纯 GTK+ 命令。
目前,EasyGTK 支持 GTK+ 版本 1.2,这是大多数 Linux 发行版附带的版本。它还包含了需要使用 Imlib、ImageMagick 和 GNOME 的函数。然而,您可以在不支持这些库的情况下编译此库,而且不需要安装它们以便使用 EasyGTK。据我所知,这个库还可以在其它 UNIX 系统(如 Sun Solaris)上工作。
有关 EasyGTK,最后需要注意的是其源代码在 GPL 许可证的规定下公开,也就是说可以定制函数以使它符合您的需要。例如,如果使用这个库来创建许多窗口,但又希望窗口不显示关闭按钮,那么可以修改此库的源代码本身来实现这个目的。这个库就是轻松编码和使应用程序创建更快速的一种方式。
参考资料
请下载 EasyGTK 库。
请下载 GTK+ 库。
请阅读 GNOME 成员 George Lebl 在 developerWorks 上发表的介绍使用 GNOME 库编程的系列文章:入门、构建样本程序和使用 libxml。George 的网站上有关于 Linux 和 GNOME 的详细信息。
请访问专用于 GNOME 应用程序开发者的站点。它包含了 API 参考大全、教程、白皮书和其它有帮助的信息。
可用的 GNOME 应用编程教程。
请尝试 gtk.org 的 GTK+ 教程。
访问 RedHat 的 RHAD 实验室,那里有许多正在进行的 GNOME/GTK+ 开发
查看 GIMP,它是 GTK+ 的发源地
关于作者
Patrick Lambert 是一位 IT 顾问和自由专栏作家。他撰写了关于计算问题和因特网的文章。他是微软认证专家 (MCP) 和认证 A+ 技术专家。可通过 [email protected] 与他联系。
php爱好者站 http://www.phpfans.net 网页制作|网站建设|数据采集.
相关阅读 更多 +