use Tk# 导入 tk 模组
use strict
my $mw = MainWindow->new# 创建窗口
my $labelObj = $mw->Label(-text =>'Hello, world!')# 创建一个 label 物件
$labelObj ->pack# pack() 是将物件程现的方法, 你再翻翻书, 还有 grid() 和 place() 的风格
$mw->Button(
-text=>'Quit',
-command =>sub { exit },
)->pack
MainLoop# 每个 tk 程序都要等到呼叫 MainLoop 才会出现.
最後, 你还得知道一个(差不多)每个物件都会的方法, 叫 configure, 你会以此对物件进行重新定义, 或附加设定
参考下面的网页
网页链接
对于只是一个简单的确认信息的对话框,比如“确定吗?”,你可以参考Dialog.pm的内容,具体细节我们将在后面的问题中讨论。
如果你不想使用Tk::Dialog模块,或者你需要更复杂一些的功能,或者你就是想用基本组件独立构建一个自己的窗口,那么你必须首先创建一个 Perl/Tk中的Toplevel组件。UserGuide.pod中的第四个例子就给出了如何调用Toplevel的一个简单的例子(译者注:在命令行中使用perldoc Tk::UserGuide就可以看到了!)。下面就是那个脚本中语句:
my $main = new MainWindow
fill_window($main, 'Main')
my $top1 = $main->Toplevel
这里的fill_window子程序是在MainLoop语句之后定义的。当运行这个脚本的时候,请特别注意这里是哪一个窗口先d出的?哪一个窗口当前处于输入设备的热点(即当前窗口)?以及在三个窗口都打开后,键盘和鼠标的焦点在当前窗口中的哪一个组件中?
使用Toplevel后就必然引入了要使用grab的问题,也就是说在那些独立的窗口中,哪一个是当前的活动窗口?以及那些是可以激活的?要激活一个Toplevel的窗口,可以使用如下的grab语句:
$Top_widget ->grap(grab_option)
这里$Top_widget指要被激活的Toplevel窗口(可以是上面例子中的$top1或$top2)。grap_option可以是global,但是从“分布编程风格”(??)的角度出发,我们并不鼓励这样使用。要设定一个Toplevel为“局部热点”,可以使用下面的方法:
$Top_widget ->grab
也就是说,不带任何参数。
使用Toplevel同样会引入关于focus的问题,也就是说哪一个窗口,甚至是窗口中的哪一个组件是当前的“热点”。可以对整个Toplevel调用用focus方法:
$Top_widget ->focus
但是,实际上focus更多的是被用在单个组件上而不是整个Toplevel上。
要还原一个已经最小化的窗口组件,实际上可以如下的使用Popup方法:
$Top_widget ->Popup()
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)