注册 登录  
 加关注
   显示下一条  |  关闭
温馨提示!由于新浪微博认证机制调整,您的新浪微博帐号绑定已过期,请重新绑定!立即重新绑定新浪微博》  |  关闭

Wei Ding blog

 
 
 

日志

 
 

【perl】Tk模块的一个实例——从界面进行文件的输入和输出 (转载)  

2015-04-18 11:49:23|  分类: perl-gtk2 |  标签: |举报 |字号 订阅

  下载LOFTER 我的照片书  |

 perl的界面一直都挺有兴趣的,但是之前没有界面也没什么太大的使用上的不便,这个事情就一直搁置到现在,最近仔细
研究了一下。现在终于可以通过界面用鼠标来选择输入和输出文件了(主要使用Tk模块来实现)。同时解决了Tk模块中中文乱码的问题(使用Encode模块来实现)。代码如下(windows环境下):

#!/usr/bin/perl -w
use strict;

#####################
#
#一个输入,一个输出
################################
use Tk;  #加载模块
use Encode qw/encode decode/;

my $mw = MainWindow->new;  #新建主窗口
$mw->geometry("350x160");  #设置主窗口大小
my $title = '输入&输出';  #主窗口的标题
chinese($title);  #使用中文解码,子程序在下面
$mw->title("$title");  #在主窗口中显示标题
my $frame1 = $mw->Frame->pack(-ipadx => 50, -side => "left", -fill => "y");  
#在主窗口建一个框架
my $frame2 = $mw->Frame->pack(-ipadx => 50, -side => "right", -fill => "y");  
#在主窗口建第二个框架,两个框架将主窗口一分为二。


my $input_t = '输入文件';  #这些都是下面按钮上的文字
my $output_t = '输出文件';
my $bun = '请选择';
my $ok = '确定';

chinese($input_t);  #中文解码,这样才能正常显示
chinese($output_t);
chinese($bun);
chinese($ok);

$frame1->Label(-text => "$input_t")->pack(-side => "left");  #在框架1中设置标签
my $button1 = $frame1->Button(-text => "$bun", -command => \&button_input, -bg => "green")->pack(-side => "left");  
#在框架1中设置按钮,-command表示点击按钮时触发的动作,见下面的子程序button_input
$frame2->Label(-text => "$output_t")->pack(-side => "left");
my $button2 = $frame2->Button(-text => "$bun", -command => \&button_output, -bg => "green")->pack(-side => "left");
my $button3 = $frame2->Button(-text => "$ok", -command => [$mw => 'destroy'])->pack(-side => "bottom");
MainLoop;  #界面部分完毕
my ($input_mw,$output_mw);
sub button_input {
    my $file = $mw->getOpenFile( );  #得到输入文件的路径
    $file = encode("euc-cn",$file);  #对路径进行中文编码
    $input_mw = $file;  
#这里得到了输入文件的路径,并赋值给$input_mw,
#因此这个子程序需要放在前面,后面才能使用$input_mw来表示输入路径
    print "Your input file's "."$file\n";

}
sub button_output {  
    my $file = $mw->getSaveFile( );  #得到输出路径
    $file = encode("euc-cn",$file);
    $output_mw = $file;
    print "Your output file's "."$file\n";
}

sub chinese {  #上面用来设置中文解码的子程序
    $_[0]=decode("euc-cn",$_[0]);
}

my $input = $input_mw;  
#得到输入文件的路径,跟我们直接使用$input = 'D:\test\test.txt';是等效的。
my $output = $output_mw;  #得到输出文件的路径



这里有一篇很好的Tk模块的入门文章:
  评论这张
 
阅读(87)| 评论(0)
推荐 转载

历史上的今天

在LOFTER的更多文章

评论

<#--最新日志,群博日志--> <#--推荐日志--> <#--引用记录--> <#--博主推荐--> <#--随机阅读--> <#--首页推荐--> <#--历史上的今天--> <#--被推荐日志--> <#--上一篇,下一篇--> <#-- 热度 --> <#-- 网易新闻广告 --> <#--右边模块结构--> <#--评论模块结构--> <#--引用模块结构--> <#--博主发起的投票-->
 
 
 
 
 
 
 
 
 
 
 
 
 
 

页脚

网易公司版权所有 ©1997-2017