perltk教程
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
水木社区(展开完整界面) → Perl的世界→ 精华区文章阅读
Perl 版 (精华区)
发信人: sisoe (游刃), 信区: Perl
标题: perl/tk教程
发信站: BBS 水木清华站 (Tue Aug 29 12:23:44 2000)
perl/tk 教程
浦绍忠
前言
perl/tk 在图形界面、表框设计、菜单设计等方面功能强大,对字体、颜色
和绑定使用灵活,容易上手。
本教程写作原则:
简洁明了地介绍 perl/tk 的功能及其使用,对功能的使用一般只介绍一种
方法,其余方法由读者自己实践。对于perl/tk的常用功能及其使用给以相应的
例子,为突出选项的作用,在例子中有时不是遵循美学原则,得到漂亮的界面,
而是使用一些夸张的选项值。
教程的介绍对象是 perl/tk 402.002 版本,使用Windows 序列操作系统,
本教程中全部例子都在 Windows95,Windows98 下试验通过。
讲解 perl/tk 基本组件,基本使用方法,对 perl/tk 的扩展模块不作说明,
由读者自己去学习掌握。假定读者已掌握 perl 基础知识,对例子中用到的perl
基础知识不作讲解。
第一章 perl/tk 概要说明
一。perl/Tk的取得
从多个网站上可以取得perl/Tk, perl/Tk的安装需要C++的编译器。
Gurusamy Sarathy 已经为使用 Intel 芯片的机器在 NT 上安装了最常用模块的
tar 文件,压缩文件大约有6M,安装后大约有24M,安装后就可以在 Windows 系
列系统下使用 Perl/Tk。为便于下载,你可以从国内网站"http://ftp.freesoft.
/pub/languages/perl/CPAN/modules/by-authors/id/GSAR/"取得
Gurusamy Sarathy 安装好的 perl5.00402-bindist04-bc.zip文件。解压,然后
安装后即可使用(不需要自己用C++编译器进行编译)。
二。perl/tk描述
perl/tk--用perl5写tk程序, perl/tk是GUI类程序,即事件驱动程序。GUI
主循环在用户程序之外,在GUI库内,该主循环监视所有“感兴趣”事件,激活
相应程序处理这些事件,这些处理程序可以由用户提供,也可以是GUI库的一个
部分。
不需要编程人员时刻注视着正在发生的事件,而是当工具包需要的时候再动
作,也不需要等待着“打开窗口/关闭窗口/重画窗口”这些请求,而是告诉工具
包哪个过程处理这些请求,当需要的时候工具包再调用所需过程。
程序要求:
perl/tk 程序需要 use Tk 语句,有必要包含 use strict 语句和 -w 开关
以避免公共错误。
任何 tk 应用都需要首先创建 tk 主窗口,然后创建窗口内的项目或者新窗
口,最后创建主循环(当然也可以在运行时创建更多的项目和窗口)。当包装项
目时,它们显现出来。然后执行 tk 主循环,这将启动 GUI 和处理应用中的所有事件。
创建主窗口使用:
$mw = new MainWindow; 或者 $mw = MainWindow -> new;
项目创建
tk 窗口和组件是分层结构的,它们互不包含。
创建组件使用:
$widget = $parent -> widgetclass(?-option => value,...?);
widgetclass 是需要创建的新组件类(例如,Button),$parent 是父组件的perl/Tk 指针,新建组件的对象指针储存在 $widget 中, $widget 成为 $ parent的一个子件,它创建分层组件。
以下语句创建一个按钮组件 $b ,并用包装方法将它显示出来。
$b = $mw -> Button(-text => "hello world")->pack;
所有组件创建命令能够使用选项 =>资源参数形式将资源数据库同组件联
系起来。
选项以“-”开始,通常跟一个数值:一个整数、或者一个字符串是一个perl 标量、数组、哈希数组或者代码指针。创建后,可以用配置方法改变选项值。配置方法的一般形式:
$widget = configure(-option => value,...);
用 cget 命令查询选项的当前配置值:
$widget = cget(-option);
exam1.pl 显示一个窗口
#####exam1.pl
#! /usr/bin/perl5 -w
use strict;
use Tk;
my $main = new MainWindow;
$main->Label(-text => 'Hello, world!')->pack;
$main->Button(-text => 'Quit',
-command => sub{exit}
)->pack;
MainLoop;
exam1.pl 中创建了主窗口和项目,并对项目进行了包装。
在 tk 句柄上使用构造器方法,能在窗口或组件内创建子项目。构造方法中能指定各种选项;之后能用 configure 方法增加或改变选项。Toplevel 构造器方法创建一个顶层窗口,是分层结构的一个例外。
在 exam1.pl 中,使用 new MainWindow 语句创建第一个 tk 窗口,返回一个窗口句柄,赋给 $main 变量。从¥main 用 Label 方法在主窗口中创建了一个标签组件。
创建组件后,需要对它进行包装,如果不再需要该组件,可以用 destrory 方法删除它,删除后将取消组件和它的一切子件的映射。注意,复合调用得到包装结果而非一个有效的tk句柄。
标准 tk 组件类型:
Button 按钮