上一节的代码如下
use Win32::GUI();
use Encode; #转码需要用到的模块
use utf8; #本程序用utf8编码
my $main = Win32::GUI::Window->new(-width => 200, -height => 200, -title => "My GUI application");
$main->AddLabel(-text => "Hello, world", -align =>'right',-width => 100);
$main->Center(); #这一句使主窗口生成的时候居中显示 否则会默认在屏幕的左上角显示
$main->Show();
Win32::GUI::Dialog();
这一节学习了怎样在主窗体上添加一个按钮,并且点击这个按钮会激活一个修改Label文本的方法。
首先 主窗口上的控件,为了之后方便调用这个控件,会加入一个name的属性,譬如给之前的Label取名为”Label1“
$main->AddLabel(-name => "Label1",-text => "Hello, world", -align =>'right',-width => 100);
这样之后用如下方式就可以修改它的文本了
$main->Local1->Change(-text => encode('gbk',"你好,世界")); #因为Windows汉字是gbk编码,所以这里汉字需要用encode方法转一下码
下面先用代码在主窗口上添加一个叫B1的按钮
$main->AddButton(
-name => 'B1',
-pos => [100,100],
-text => encode('gbk',"执行程序 "),
-default => 1,
-ok => 1,
-visible => 1,
-onClick => \&changeText,
);
上面代码的含义是 在main上位置100,100上加入一个名字叫B1的按钮,按钮上的文字显示为"执行程序 ",单击这个按钮会激活一个changeText的方法。
下面编写changeText的方法来改变Label1里的内容
sub changeText{
my $self = shift;
$main->Label1->Change(-text => encode('gbk',"你好,世界"));
}
以下为整个代码的内容
use Win32::GUI();
use Encode;
use utf8;
my $main = Win32::GUI::Window->new(-width => 200, -height => 200, -title => "My GUI application");
$main->AddLabel(-name => "Label1",-text => "Hello, world", -align =>'right',-width => 100);
$main->AddButton(
-name => 'B1',
-pos => [100,100],
-text => encode('gbk'," 执行程序 "),
-default => 1,
-ok => 1,
-visible => 1,
-onClick => \&changeText,
);
$main->Center(); #这一句使主窗口生成的时候居中显示 否则会默认在屏幕的左上角显示
$main->Show();
Win32::GUI::Dialog();
sub changeText{
my $self = shift;
$main->Label1->Change(-text => encode('gbk',"你好,世界"));
}
下图是启动时的画面
点击按钮之后,文本变成了中文,如图