由于项目需求,要编写程序的GUI界面,脚本程序使用Perl,因此选用Perl/Tk模块来实现GUI。初次接触Perl/Tk模块,自我摸索过程中,欢迎大家交流与指正。
目标:编写一个程序的使用界面,具体功能为选择文件,实现文件调用并运行程序。
安装:使用Ubuntu系统,安装perl之后,使用sudo apt-get install perl-tk安装Tk模块(在此之前尝试使用CPAN的方法安装,编译文件一直出问题,网上查找发现很多人遇到相同问题且没有找到解决方案),使用perl -e “use Tk”(注意是大写T小写k)检查Tk模块是否安装成功。
使用:安装Tk模块后,使用widget命令,会有很多简单的Perl/Tk例程,可以点击进行学习。
实践:在linux终端运行widget,显示如下例程窗口:
选择Common Dialogs的File selection dialog选项,点击see code即可查看使用Tk模块编写的文件选择的源代码。
读懂程序后,写一个满足自己需要的打开文件的版本,界面如下:
code如下:
#! /usr/bin/perl -w
use Tk;
use strict;
my $mw=MainWindow->new;
$mw->title("open file");
my $f=$mw->Frame;
my $lab=$f->Label(-text=>"select a file to open: ",
-anchor=>'e');
my $ent=$f->Entry(-width=>20);
my $button=$f->Button(-text=>"Browse",-command=>sub{but_openfile()});
$lab->pack(-side=>'left');
$ent->pack(-side=>'left',-expand=>'yes',-fill=>'x');
$button->pack(-side=>'left');
$f->pack(-fill=>'x',-padx=>'1c',-pady=>3);
MainLoop;
sub but_openfile {
my $types;
my $file;
my @types=
(["Text files", [qw/.txt .doc/]],
["Text files", '', 'TEXT'],
["Perl Scripts", '.pl', 'TEXT'],
["C Source Files", ['.c', '.h']],
["Image Files", '.gif'],
["Image Files", ['.jpeg', '.jpg']],
["Image Files", '', [qw/GIFF JPEG/]],
["All files", '*']
);
$file=$mw->getOpenFile(-filetypes=>\@types);
if (defined $file and $file ne '') {
$ent->delete(0,'end');
$ent->insert(0,$file);
$ent->xview('end');
}
}