- 论坛徽章:
- 0
|
Perl 是UNIX界最常用的脚本语言之一,模块功能当然是它的一个最大的特点,这样使Perl可以拥有大量的扩展功能,同时可以让更多的开发者开发自己可以定制的模块。Tk模块是perl的一个图形化接口模块(GUI),使得原本只能在文本环境下实现的功能,现在可以让它在图形环境下运行,这样可以吸引跟多用户,使开发变得更加形象。本文介绍了Perl/tk编程的基础知识。\r\n\r\n原文:http://www.ibm.com/developerworks/cn/aix/library/au-perltkmodule/index.html?ca=dgr-cn-ixpub&\r\n\r\n尽管基于 Perl 的 Web 接口存在局限性,但 Perl 仍是最常用的 Web 开发语言之一。在 Shell 脚本、Perl 或其他语言方面有编程经验的 UNIX? 用户可通过使用 Perl/Tk 模块为基于 Perl 的 Web 接口带来新的生机。 Perl语言经常由 IBM? AIX? 操作系统管理员和开发人员使用,几乎每个成功的网站和大多数 AIX 系统上都使用了该语言。尽管 Perl脚本的功能非常强大,但它产生的 Web 接口却缺少图形化前端,用户必须键入信息,而不能使用鼠标,对于客户来说,这一点非常不尽人意。随着Perl 中 Tk 模块的引入,此问题已得到解决。管理员或开发人员可以利用 Tk 模块快速为其 Perl 脚本带来新的生机,从而满足客户对X11 产品的需要。\r\n 什么是 Perl?\r\n Perl 即“实际提取和报告语言”,是 Larry Wall 于 1987 创建的,作为一种简化其编程工作的手段。从其创建以来,Perl 已经发展成为全球使用的语言,目前是大多数管理员和开发人员的必备工具。\r\n 什么是 Perl/Tk 模块?\r\n Perl/Tk模块(也称 pTk 或 ptk)是一个专门用来创建小部件或其他通用图形对象以构成图形用户界面 (GUI) 的 Perl 模块。使用该模块创建的GUI 改善了程序的外观,可帮助最终用户通过程序及其函数进行导航。使用 Perl/Tk模块的一个主要优势是最终产生的应用程序可以跨平台运行,这意味着,同一 GUI 应用程序可用于UNIX?、Linux?、Macintosh、Microsoft? Windows? 或其他任何安装了 Perl 和 Perl/Tk模块的操作系统。\r\n 在哪里可获得 Perl/Tk 模块\r\n 在您使用 Perl/Tk 模块编写应用程序之前,必须验证是否安装了 Perl 和 Perl/Tk 模块。尽管 Perl 一般会安装在计算机上,Perl/Tk 模块却并非如此。检查是否安装了 Perl 的一种方法是在命令行中输入 perl --version。如果未安装 Perl,请参考 Perl 网站上的安装指南(请参阅参考资料)。\r\n 在找到 Perl 或将其安装到您的计算机上之后,下一步则是确定是否需要安装 Perl/Tk 模块。检查是否安装了模块的一种简单方法是在命令提示符下键入 perl -e \"use module\"。若要验证是否安装了 Perl/Tk 模块,请执行以下命令:\r\n\r\n如果发现有该模块,该命令将执行,并返回一个命令提示符。但是,如果未发现该模块,则将显示类似以下内容的错误消息: Can\'t locate Tk.pm in @INC (@INC contains: /opt/ActivePerl-5.8/site/lib \r\n /opt/ActivePerl-5.8/lib .) at -e line 1.\r\n BEGIN failed--compilation aborted at -e line 1.\r\n | \r\n 请记住,Perl 是区分大小写的:perl –e \"use Tk\" 和 perl –e \"use tk\" 是尝试使用两种不同模块(Tk 和 tk)的两种不同语句。\r\n 如果未发现该模块,下一步则是下载并安装该模块。您可以用多种方法完成此操作。\r\n 如果您使用的是 UNIX 或 Linux,下载和安装 Perl 模块的一种方法是使用 Comprehensive Perl Archive Network (CPAN)。在命令提示符中输入以下命令:\r\n perl –MCPAN –e shell\r\n install Bundle::CPAN\r\n reload cpan\r\n install Tk\r\n | \r\n 如果您使用的是 Windows,类似的方法是使用 Perl Package Manager (PPM)。在命令提示符中,输入 ppm 以启动 GUI 并下载 Tk 模块。\r\n 完成安装后,通过执行 perl –e \"use Tk\" 重新验证 Perl 是否可找到该模块。 \r\n 创建一个窗口\r\n 既然计算机上已经安装了 Perl 和 Perl/Tk 模块,现在就可以通过该模块编写您的第一个 GUI 程序了。开始时可以编写一个简单的 Hello World 程序。利用您喜欢的文本编辑器,创建一个名为 helloworld.pl 的文件,然后在文件中输入以下文本:\r\n #!/usr/bin/perl -w\r\n # Display Hello World program\r\n \r\n use Tk;\r\n use strict;\r\n \r\n my $mw = MainWindow->new;\r\n $mw->geometry(\"200x100\");\r\n $mw->title(\"Hello World!!!\");\r\n \r\n $mw->Label(-text => \'Hello World\')->pack();\r\n \r\n $mw->Button(-text => \"Close\", -command =>sub{exit})->pack();\r\n \r\n MainLoop;\r\n | \r\n 执行此脚本将生成 GUI 应用程序,如下面的图 1 所示。\r\n \r\n图 1. Hello World 示例\r\n \r\n 让我们逐行分解一下此脚本:\r\n \r\n 第一部分 (/usr/bin/perl) 定义了 Perl 可执行文件在计算机上驻留的位置,指示计算机使用该 Perl 可执行文件的副本执行 helloworld.pl 文件。此命令行的第二部分 (-w) 是 Perl 中的一个重要工具:它支持在执行脚本时发出警告,通知最终用户可能发现的任何错误。\r\n 在执行期间不应评估的注释和文本前面都加上了一个 # 号:\r\n # Display Hello World program\r\n | \r\n 为了让 Perl 脚本使用 Tk 模块,还必须包含此模块,即 use Tk。将 use strict 语句添加到 Perl 脚本还有助于发现任何可能的输入或逻辑错误:\r\n use Tk;\r\nuse strict;\r\n | \r\n 要创建应用程序的主窗口,请使用 MainWindow,并将它分配给 $mw。$mw 充当所有其他小部件的父部件:\r\n my $mw = MainWindow->new;\r\n | \r\n 将主窗口大小设置为 200 x 100,让该窗口的标题为“Hello World!!!”:\r\n $mw->geometry(\"200x100\");\r\n$mw->title(\"Hello World!!!\");\r\n | \r\n 在主窗口内创建一个标签,并使用标题 Hello World。标签创建的末尾是一个附加函数 pack,它是一个几何管理器。该管理器用于小部件上,用来计算在小部件的父部件上分配的空间;同时还显示该小部件:\r\n $mw->Label(-text => \'Hello World\')->pack();\r\n | \r\n 该代码行在主窗口中创建一个“Close”按钮。当通过鼠标点击激活或用键盘执行它后,此按钮将退出 Perl 脚本:\r\n $mw->Button(-text => \"Close\", -command =>sub{exit})->pack();\r\n | \r\n 而且,由于此按钮占用主窗口的空间,所以需要使用 pack 函数来计算所占用的空间。\r\n 在执行 MainLoop 之前,可以读取、定义和随时执行该脚本中的所有内容。然后,当调用 MainLoop 时,将执行在此之前读取的所有函数和数据,并显示 GUI。\r\n \r\n 小部件\r\n 本部分将介绍一些小部件。本部分将介绍几个基本小部件,并提供有关每个小部件的示例,其中包括框架、文本、入口、按钮和标签。\r\n 什么是小部件?\r\n 小部件 是一种可以执行特定功能的图形对象。Perl/Tk 模块中的任何图形对象都可以视为一个小部件。对于 GUI 应用程序而言,按钮、文本、框架和滚动栏都是小部件。\r\n 下面的小部件示例构成了本文稍后将要讨论的小部件的基础。\r\n 框架\r\n 框架小部件正如其名称所描述的那样:是一个框架或盒子。框架用来对其他小部件进行分组。\r\n 请输入下面的脚本:\r\n #!/usr/bin/perl -w\r\n\r\nuse Tk;\r\nuse strict;\r\n\r\nmy $mw = MainWindow->new;\r\n$mw->geometry(\"200x100\");\r\n$mw->title(\"Frame Test\");\r\n\r\n$mw->Frame(-background => \'red\')->pack(-ipadx => 50, -side => \"left\", -fill => \"y\");\r\n$mw->Frame(-background => \'blue\')->pack(-ipadx => 50, -side => \"right\", -fill => \"y\");\r\n\r\nMainLoop;\r\n | \r\n 执行此脚本时,会生成一个 GUI 应用程序,如图 2 所示。\r\n \r\n图 2. 框架小部件示例\r\n \r\n 下面我们分析一下该脚本:\r\n #!/usr/bin/perl -w\r\n\r\nuse Tk;\r\nuse strict;\r\n\r\nmy $mw = MainWindow->new;\r\n$mw->geometry(\"200x100\");\r\n$mw->title(\"Frame Test\");\r\n…\r\n…\r\nMainLoop;\r\n | \r\n 本部分在前面的示例中已讨论过,因此,现在我们看一个新语句。\r\n 创建一个使用主窗口作为父窗口的框架,并将背景颜色设置为红色。与前面的 pack 方法示例不同,这里包括了几个选项:\r\n $mw->Frame(-background => \'red\')->pack(-ipadx => 50, -side => \"left\", -fill => \"y\");\r\n | \r\n 第一个参数 ipadx 将框架的宽度增加了 100 (50 x 2)。第二个参数 side 将该框架的几何位置调整到了其父框架 ($mw) 的左侧。第三个参数按照 y 轴方向(垂直)在该框架内分配空间。\r\n 此框架类似于前面的框架,但背景是蓝色的,位置在主窗口的右侧:\r\n $mw->Frame(-background => \'blue\')->pack(-ipadx => 50, -side => \"right\", -fill => \"y\"); |
|