<pre name="code" class="sql">#!/usr/local/bin/perl
use Tk;
#Global Variables
my $age = 10;
# Main Window
my $mw = new MainWindow;
#GUI Building Area
my $frm_name = $mw -> Frame();
my $lab = $frm_name -> Label(-text=>"Name:");
my $ent = $frm_name -> Entry(); ###定义输入文本框
#Age
my $scl = $mw -> Scale(-label=>"Age :", # Scale 通过用户输入的变量调整滚动条
-orient=>'v', -digit=>5, #-orient=>'v' 滚动条垂直布局 digit数字位数
-from=>10, -to=>50, #开始数字和结束数字
-variable=>$age, -tickinterval=>10); #-variable=>$age传入变量引用,-tickinterval=>10
刻度间隔20
my $but = $mw -> Button(-text=>"Push Me", -command =>&push_button); ## 执行函数
push_button
#Text Area
my $textarea = $mw -> Frame();
my $txt = $textarea -> Text(-width=>50, -height=>10);
my $srl_y = $textarea -> Scrollbar(-orient=>'v',-command=>[yview => $txt]); ##Scrollbar
滚动条垂直
my $srl_x = $textarea -> Scrollbar(-orient=>'h',-command=>[xview => $txt]);
$txt -> configure(-yscrollcommand=>['set', $srl_y], ##yscrollcommand文本部件和滚动条通讯
-xscrollcommand=>['set',$srl_x]);
#Geometry Management
$lab -> grid(-row=>1,-column=>1); ###文本框
$ent -> grid(-row=>1,-column=>2); ###入口
$scl -> grid(-row=>2,-column=>1); ##滚动条
##-row=>1,-column=>1 表示插入的子控件占据了第N行从0开始,如果不支持这个选项,那么
##子控件会被安排在相同行和先前的控件被grid布局,或者是空的是第一个子控件
row=>1 column=>1 第一行第一列
$frm_name -> grid(-row=>1,-column=>1,-columnspan=>100);
#columnspan=>2 占据的列数
$but -> grid(-row=>4,-column=>1,-columnspan=>2);
#$but2 -> grid(-row=>2,-column=>2,-columnspan=>2);
$txt -> grid(-row=>1,-column=>1);
$srl_y -> grid(-row=>1,-column=>2,-sticky=>"ns");
$srl_x -> grid(-row=>2,-column=>1,-sticky=>"ew");
$textarea -> grid(-row=>5,-column=>1,-columnspan=>2);
MainLoop;
## Functions
#This function will be exected when the button is pushed
sub push_button {
my $name = $ent -> get();
$txt -> insert('end',"$name is $age years old");
}