使用 Gtk2-Perl 编程/简介
这本书的目标读者是至少有一些 Perl 编程经验的人。不会讨论一般的编程主题和 Perl 编程语言的语义。重点将放在使用 Gtk2-Perl API 创建图形应用程序。如果您是编程或 Perl 新手 - 在继续之前,您应该进行一些自我反省。
Gtk 是一个用于创建图形用户界面的库。Gtk 代表 GIMP 工具包 - 以此命名是因为它是在GNU 图像处理程序中开发的。Gtk 是免费的开源软件。它是在 LGPL 许可下发布的,这意味着您可以在不支付许可费的情况下使用它开发免费/开源软件或商业软件。
Gtk+ 库是用 C 编程语言编写的,但可以从多种其他语言中使用,例如 Perl、Python、Ruby、PHP、Java 等。可以在http://www.gtk.org/language-bindings.php找到支持的语言绑定完整列表。
Gtk2 建立在四个主要组件之上。
GIMP 绘图工具包和 gdk-pixbuf 是用于窗口处理和图像操作的底层函数。这两个库的 Perl 模块可以在 Gtk2 命名空间中找到,作为 Gtk2::Gdk 和 Gtk2::Gdk::Pixbuf。
Glib 用它自己的版本替换了一些本地 *nix 调用,以增加功能或提高 Gtk 的可移植性。Glib 还提供了 Gtk 类层次结构背后的底层类型系统,Gtk 中使用的信号系统,一个线程 API,以及一个模块加载工具。Glib 库绑定在 Glib 命名空间下。
Pango 是一个用于处理(国际化)文本输出的库。Pango 在 Gtk2 命名空间下绑定,作为 Gtk2::Pango。
Gtk2-Perl 是指一组用于 Gtk+ 及相关库的 Perl 绑定。使用 Gtk2-Perl 需要在您的系统上安装以下内容
- Perl
- Gtk+ 二进制文件和依赖项
- Gtk2-Perl 模块和依赖项
Perl 很可能已安装在您的计算机上。如果它没有安装 - 从这里获取它。
Gtk+ 也可能已安装在您的系统上。如果没有,您应该在互联网上查找专门针对您的操作系统的预构建二进制文件。一个简单的 Google 搜索很可能会产生您要查找的结果。如果您的操作系统没有提供二进制文件,您可以自己编译 Gtk+。
在您的系统上安装了 Gtk+ 和 Perl 后,您需要安装 Perl 语言绑定。与大多数优秀的 perl 事物一样,您可以通过 CPAN 安装 gtk-perl 库。在提示符下输入以下命令以自动安装。
perl -MCPAN -e 'install Gtk2'
如果您在从 CPAN 实用程序安装时遇到问题,您可以下载该模块并手动安装它。下载并解压缩存档后,从解压缩的文件夹的根目录发出这些命令。
perl Makefile.pl
make
make test
make install
由于 Windows 没有附带所有必要的实用程序来编译它(以及许多其他出色的开源软件),因此在 Windows 上运行 Gtk2 和 Gtk2-Perl 有其注意事项。以下是您的三个选择。
1. 从这里安装最新版本的 ActiveState perl
2. 在 PPM 中添加 sisyphusion 仓库(从 PPM GUI 中选择它 -> 编辑 -> 首选项 -> 仓库 -> 建议)
3. 从sisyphusion 仓库安装 Glib、Gtk2、Cairo 和 Pango 模块。
以及推荐的方法。下载并安装camelbox。bam - 你完成了。缺点是像 libexpat 和 libgd 这样的 ActiveState ppm 仓库中可用的东西在 camelbox 中不可用。编译这些库可能比从源代码编译自己的 Gtk+ 更难。一般来说,camelbox 应该足以满足大多数用户的需求,并且拥有安装大量有用模块和实用程序的选项和工具。
按照http://lostmind.de/gtk2-perl/中的说明操作。该网站详细介绍了使用 ActiveState Perl 5.8.8 build 819 使 Gtk2-perl 正常工作所需的一切。缺点:它已经过时。它是 Perl 的旧版本,更重要的是 Gtk+ 的旧版本。在 Gtk+ 和 Perl 语言绑定中都实现了很多当时不存在的功能。
这适合高级用户。从源代码构建您的系统上的 Gtk+。针对您的 Gtk+ 和 Perl 构建构建 gtk2-perl 库。有关如何执行此操作的说明超出了本书的范围。
- Peter Mattis [email protected]
- Spencer Kimball [email protected]
- 乔希·麦克唐纳 [email protected]
- 欧文·泰勒 [email protected]
- 蒂姆·亚尼克 [email protected]
- 木偶人 [email protected]
- 罗斯·麦克法兰 [email protected]
- 托尔斯滕·肖恩菲尔德 [email protected]
- 马克·莱曼 [email protected]
- 戈兰·提尼 [email protected]
- 约恩·雷德 [email protected]
- 查斯·欧文斯 [email protected]
- 吉约姆·科腾索 [email protected]