如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅

如何使用Perl语言在windows下编写图形化窗口程序啊,求大师,最好给个例子瞅瞅,第1张

perl 的图形有两种玩法, Tk 和 Tkx. Tk 是纯 Perl 的, 但能用的 widget (即那些 button, menu, scrollbar... )比较少Tkx 则需要你先装有 Tcl/Tk , 但能用的 widget 比较多. 一个最简单的例子就是

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()


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11498462.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存