Chinaunix首页 | 论坛 | 博客
  • 博客访问: 245317
  • 博文数量: 41
  • 博客积分: 0
  • 博客等级: 民兵
  • 技术积分: 441
  • 用 户 组: 普通用户
  • 注册时间: 2015-04-11 11:05
个人简介

123

文章分类

全部博文(41)

文章存档

2019年(2)

2018年(3)

2017年(2)

2016年(11)

2015年(23)

我的朋友

分类: PERL

2015-04-24 14:40:59

安装完了perl-Gtk2后,我在百度上找到一篇关于perl-Gtk2编程的文件,网址是:http://www.ibm.com/developerworks/cn/linux/l-perlgtk/。在里面看到helloword.pl代码,代码内容如下:
#!/usr/bin/perl

use Gtk2;
use Encode qw/ encode decode /;  ##加载encode模块,用来对中文编码
Gtk2 -> init;  ##Gtk+程序初始化
my $win = Gtk2::Window -> new ( );  ##建立一个新的窗口
$win -> set_title ( 'Hello world program' );  ##设置窗口的标题
$win -> set_size_request ( 320,240 );  ##设置窗口的大小为320 240
$win -> signal_connect ( destroy => sub { Gtk2 -> main_quit; } );  ##设置程序退出信号
my $word = "Hello world\n".decode ( "euc-cn",'这是你的第一个Gtk2-perl程序。' );  
 ##在屏幕几的中央写的文字,中文需要utf8编码
my $label = Gtk2::Label -> new ( $word );   ##新建一个标签组件
$win -> add ( $label );  ##在窗口中添加这个标签组件
$win -> show_all;  ##显示窗口中的所有元素
Gtk2 -> main;  ##开始主循环

运行:perl helloword.pl 后的结果如下:  如上截图,运行结果有乱码。问题出在哪呢?细看代码,问题应该出在如下代码中:
my $word = "Hello world\n".decode ( "euc-cn",'这是你的第一个Gtk2-perl程序。' );  
把"euc-cn"换成"utf8"后,再次运行,发现中文显示正常了。如下截图:  以下是修改后的完整代码:
  1 #!/usr/bin/perl
  2 
  3 use Gtk2;
  4 use Encode qw/ encode decode /;  ##加载encode模块,用来对中文编码
  5 Gtk2->init;  ##Gtk+程序初始化
  6 my $win = Gtk2::Window->new();  ##建立一个新的窗口
  7 $win->set_title ( 'Hello world program' );  ##设置窗口的标题
  8 $win->set_size_request ( 320,240 );  ##设置窗口的大小为320 240
  9 $win->signal_connect ( destroy => sub { Gtk2->main_quit; } );  ##设置程序退出信号
 10 my $word = "Hello world\n".decode( "utf8",'这是你的第一个Gtk2-perl程序。' );
 11  ##在屏幕几的中央写的文字,中文需要utf8编码
 12 my $label = Gtk2::Label->new ( $word );   ##新建一个标签组件
 13 $win->add( $label );  ##在窗口中添加这个标签组件
 14 $win->show_all;  ##显示窗口中的所有元素
 15 Gtk2->main;  ##开始主循环


下面分析整个程序的结构:
第一行是声明脚本所用的解析器/usr/bin/perl; 
第三、四行是两条use语句用于加载Gtk2和Encode模块; 
第五行初始化Gtk程序; 
第六行创建一个窗口实例; 
第七到九行是设置窗口的各种属性; 
第十行是创建一个字符串实例; 
第十二行用第十行的字符串实例创建一个标签实例; 
第十三行把标签实例加到窗口实例; 
第十四行显示窗口实例的所有元素; 
第十五行开始主循环。       
整个程序的结构可以总结为:加载Gtk2模块,初始化Gtk程序,创建窗口或对话框等对象实例,设置实例的各种属性,将各种图形化组件实例增加到窗口或对话框,显示窗口或对话框实例的所有元素,开始主循环。

阅读(2306) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~