URN Logo
UNIX Resources » Linux » China Linux Forum » Perl 编 程 » 10 » Tk::Label介绍
announcement 声明: 本页内容为中国Linux论坛的内容镜像,文章的版权以及其他所有的相关权利属于中国Linux论坛和相应文章的作者,如果转载,请注明文章来源及相关版权信息。
Resources
China Linux Forum(finished)
Linux Forum(finished)
FreeBSD China(finished)
linuxforum.net
  业界新闻与评论
  自由软件杂谈
  IT 人生
  Linux软件快递
  翻译作坊
  Linux图书与评论
  GNU Emacs/XEmacs
  Linux 中文环境和中文化
  Linux桌面与办公软件
  Linux 多媒体与娱乐版
  自由之窗Mozilla
  笔记本电脑上的Linux
  Gentoo
  Debian 一族
  网络管理技术
  Linux 安装与入门
  WEB服务器和FTP服务器
  域名服务器和邮件服务器
  Linux防火墙和代理服务器应用
  文件及打印服务器
  技术培训与认证
  Linux内核技术
  Linux 嵌入技术
  Linux设备驱动程序
  Linux 集群技术
  LINUX平台数据库
  系统和网络安全
  CPU 与 编译器
  系统计算研究所专栏
  Linux下的GUI软件开发
  C/C++编程版
  PHP 技 术
  Java&jsp技术
  Shell编程技术
  Perl 编 程
  Python 编 程
  XML/Web Service 技术
  永远的Unix
  FreeBSD世界
   
Tk::Label介绍
Tk::Label介绍 - hoowa [2003-01-03 14:06 | 13,363 byte(s)]
 
Re: Tk::Label介绍 - wind [2003-01-04 13:09 | 6 byte(s)]
 
Re: Tk::Label介绍 - hoowa [2003-01-06 13:33 | 8 byte(s)]
 
Subject: Tk::Label介绍
Author: hoowa    Posted: 2003-01-03 14:06    Length: 13,363 byte(s)
[Original] [Print] [Top]
4.1 Label 标签容器
作为最简单的Tk容器,Label的使命便是在你的屏幕上显示一些文字或是图片(提示1),Label可能并不处理任何事件,但它却向用户说明了一些信息。
提示1:Label标签不仅仅只是单可以显示一些文字,它还可以将你的漂亮图片,甚至
你自己的照片显示在屏幕上。

Label标签在默认的情况下是不会成为输入焦点(您无法在Label之上输入任何内容或是选中Label显示的文字),也不会有任何的事件响应(提示2)。
提示2:Label标签可以通过设置绑定事件来响应用户的某些操作,事件的绑定将在“第七章的事件系统”做详细说明

例子4.1.pl:
1 #!/usr/bin/perl2 2 use Tk;34 $MW = MainWindow->new();56 $MW->Label(-text=>"Perl/Tk跨平台图形设计")->pack();78 MainLoop;

图4.1-1W:例子4.1.pl在Windows2000下运行的效果

图4.1-1L:例子4.1.pl在Linux下运行的效果
4.1.1 Label 标签容器的属性
Tk::Label
摘 要:
$Label = $Parent->Label( [属性选项] );

通过$Parent调用Label方法产生一个标签,并返回对象索引到$Label中。
[属性选项]的内容为可选

格式方法:
$Parent->Label()-pack();
这里的$Parent为需要产生Label的父容器,例如你的MainWindow。
调用$Parent的Label方法产生一个标签,并且用排版管理器Pack放置到$Parent之上。这里并未将索引返回给任何对象变量。这样做的好处是少打几个字母,但如果你以后需要对这个对象进行修改就不推荐这样表达!
$Label = $Parent->Label(-text=>’Label Widget’)->pack();
一个让人推荐的标准表达方式,在产生标签的时候同时加了一个-Text的属性,并且将对象索引传到对象变量$Label中。

属性选项:
anchor
格 式:-anchor => 位置
可用参数:n、ne、e、se、s、sw、w、nw、center
n:北 ne:东北
e:东 se:东南
s:南 sw:西南
w:西 nw:西北
center:中心
说 明:将文字或图片摆放在Label中某个特定的位置上。

background
格 式:-background => 颜色
别 名:-bg
可用参数:可以是颜色的英文字母red、blue、black等,也可以是#FFFFFF这种表达方式。
说 明:设置Label的背景颜色。

bitmap
格 式:-bitmap => 位图名称
说 明:显示指定的bitmap图而不是任何文字信息。

borderwidth
格 式:-borderwidth => 数值
别 名:-bd
说 明:指定Label的边框线宽度,在不同显示风格(参看属性-relief)下,改变边框线的宽度将实现不同的效果。

cursor
格 式:-cursor => 指针名称
说 明:当鼠标指针放到Label上时,鼠标的形状将变成cursorname指定的样式。

font
格 式:-font => 字体格式
可用参数:
Windows:Windows系统下您可以使用-font=> ‘{宋体} 11 {normal}’这种格式。
Linux:
说 明:指定Label显示文字字体的格式,此参数的内容根据系统的不同格式也会有所不同。

foreground
格 式:-foreground => 颜色
别 名:-fg
可用参数:可以是颜色的英文字母red、blue、black等,也可以是#FFFFFF这种表达方式。
说 明:设置Label的文字颜色。

height
格 式:-height => 数值
可用参数:数值必须是屏幕有效间距。
说 明:Label特有属性(提示3);设定Label的高度。如果没有指定这个属性,Label将自动计算文字或图片的大小并且并设置成为Label的高度
提示3:很多属性在大部分容器中都是通用的,但height就是一个特例子。我们以后还会遇到这些特例的属性。

image
格 式:-image => 图片名称
说 明:在Label中显示图片名称所指定的Image,图片名称并非是图片的路径,而是由类TK::Image所生成名字标记(提示4)。在一个包含image和text两种参数的Label中程序将会超越text而显示image。
提示4:如何为图片指定一个 图片名称 将在第五章图象容器中说明。

justify
格 式:-justify => 方向
可用参数:left、right、center
说 明:设置多行文本的对齐方向是left:左、right:右、center:中。如果没有选择这个属性选项,将默认为center。

padx
格 式:-padx => 数值
说 明:在Label的X轴(两边)增加空余的空间。

pady
格 式:-pady => 数值
说 明:在Label的Y轴(上下)增加空余的空间。

relief
格 式:-relief => 数值
可用参数:flat、groove、raised、ridge、sunken、solid
说 明:设置Label的显示风格,这里有六种风格可以供你选择。各种效果你可以一一测试,Label在默认的情况下使用flat风格。

takefocus
格 式:-takefocus => 数值
可用参数:0、1、undef
0 代表不允许
1 代表允许
undef 代表自动
说 明:设置是否让Label成为键盘输入的焦点(提示5)。
提示5:Label不允许成为输入焦点,不知道在这里加这样一个选择的目的是什么。

text
格 式:-text => 文本
说 明:设置Label上所显示的文本内容,显示的位置受到anchor与justify的影响。

textvariable
格 式:-textvariable => $text_variable
说 明:设置Label所显示的text内容为$text_variable变量中的内容,如果$text_variable变量中内容发生变化,Label上所显示的内容也同样发生变化。

underline
格 式:-underline => 哪一个
说 明:设置在Label中所显示的内容中第 哪一个 个字之下画上下划线。

width
格 式:-width => 数值
可用参数:数值必须是屏幕有效间距。
说 明:Label特有属性;设定Label的宽度。如果没有指定这个属性,Label将自动计算文字或图片的大小并且并设置成为Label的宽度。

wraplength
格 式:-wraplength => 数值
说 明:这个参数设置了每行所显示的最大字符数量,如果超过这个数量将会换行到下一行中显示。

应用举例:

以上介绍了繁多的Label属性选项,兴许会看上去让人觉得不知道如何用是好,那么我们在这里准备了一个例程序代码。什么都别说,先看程序吧!

例子4.1.1-1.pl:
1 #!/usr/bin/perl2 use Tk;3 4 $MW = MainWindow->new();56 $label1 = $MW->Label(7 -text => "Perl/Tk跨平台图形设计",8 -relief=>'flat',9 -borderwidth=>'4'10 )->pack();1112 $label2 = $MW->Label(13 -text => "Perl/Tk跨平台图形设计",14 -relief=>'groove',15 -borderwidth=>'4'16 )->pack();1718 $label3 = $MW->Label(19 -text => "Perl/Tk跨平台图形设计",20 -relief=>'raised',21 -borderwidth=>'4'22 )->pack();2324 $MW->Photo('label_image', -file => "label_image.gif");2526 $label4 = $MW->Label(27 -image => 'label_image',28 -relief=>'ridge',29 -borderwidth=>'4'30 )->pack();3132 MainLoop;

以上这个程序我做了四个Label标签,并且指定他们的-text属性为’ Perl/Tk跨平台图形设计’,另外分别设置了他们有四种不同的风格,以及最后一个被安放了一个我自己做的图片。

l 1-2行,设置了Perl/Tk的基本信息这里不再重复。
l 4行,创建一个MainWindow对象。
l 6-10行,创建了$Label1这个Label对象,并设置属性-text为’Perl/Tk跨平台图形设计’,风格为flat,边框线宽度为4。
l 12-16行,创建了$Label2这个Label对象,与$Label1不同的地方在于$Label2的风格是groove(我比较喜欢这个风格)。
l 18-22行,与上面的区别仅仅是风格。
l 24行,请注意这里。在这里使用了一个Photo方法,在此之前我们并未接触过这个方法。但Label标签有一个-image的属性,为了演示这个属性的功能我们必须使用一个Photo方法,关于这个方法更多的说明请参看“第五章 图象容器”。
l 26-31行,创建$Label4,指定Image属性为刚刚使用Photo属性建立的Image,其他与前面大致相同。
l 33行,终于大功告成,以MainLoop结尾。

执行效果:


图4.1.1-1w

我强烈建议你将以上代码自己练习一边,或多遍的练习,并且换用不同的属性。这样才能更牢固的记住

4.1.2 Label 的configure方法
在成功产生Label标签后的确可以就让他在那里摆放着。但是如果我们想要用Label做些事情怎么办?比如改变Label中显示的文字,让Label变的不显示出来或你想获得Label设置的一些参数。我想这些一定是您所需要的。

方法的调用?

例子4.1.2-1.pl
(这个例子主要就是创建一个Label并且再调用一下configure方法设置-text为新的值并且逐步说明)

$Label_object->configure
摘 要:
通过调用configure(提示1)方法可以设置Label标签的属性,或修改已存在的属性。
提示1:configure绝对要注意大小写如果写成Configure就会报错。另外,不要觉得懒懒就可以,在产生Label的时候如果你不将对象索引到一个对象变量中,你用什么调用configure方法呀?

格式方法:
$Label_Object->configure([-option=>值],[-option=>值]);
调用configure方法并同时使用可选的属性以实现不同的目的

@lists = $Label_Object->configure;
这个方法将会将$Label_Object所有可用的属性选项一一列出。

属性选项:

configure方法的属性选项与产生Label时的属性选项在“格式”,“参数”上是基本相同的。惟独不同的地方,configure方法是为已经产生的Label设置属性选项。

configure所支持的属性选项(具体请参考4.1.1的属性选项):
选项名称 描述
-anchor 设置或改变Label中图片当前位置
-background 设置或改变Label的背景颜色
-bitmap 设置或改变Label上当前所显示的位图
-borderwidth 设置或改变Label的边框线宽度
-cursor 设置或改变Label上鼠标指针形状(必须鼠标移动到Label上才会显示出所指定的鼠标指针形状)
-font 设置或改变Label字体格式
-foreground 设置或改变Label前景颜色
-height 设置或改变Label的高度
-image 设置或改变Label上所显示的图片
-justify 设置或改变Label中多行文本的对齐方向
-padx 设置或改变Label的左右空间
-pady 设置或改变Label的上下空间
-relief 设置或改变Label的显示风格
-takefocus 设置或改变Label是否可以成为键盘输入焦点(这个参数一般情况下是没有任何效果的)
-text 设置或改变Label中所显示的文本内容
-textvariable 设置或改变Label所指定的变量

4.1.3 Label 的cget方法
Label的cget方法的用处是从$Label_Object中获得某个属性的值。配合cget方法的使用,你可以将Label上所显示的文字或图片的名称存储到变量中,或将某些属性的值显示在界面中。

方法的调用?

例子4.1.3-1.pl
(这个例子主要就是创建一个Label并且再调用一下cget方法并且逐步说明)

$Label_object->cget
摘 要:
通过cget方法获得在产生Label的时候或使用过configure方法设置的属性参数的内容。

格式方法:
$value = $Label_Object->cget([-option]);
调用cget方法,并且将可选属性选项的值传到$value中。


属性选项:

cget方法可用的属性选项也是与产生Label时的属性选项在“格式”上基本相同。但是请您注意,由于cget方法并不实际操作任何设置或改变什么,所以它不需要所指定属性的参数。

cget所支持的属性选项(具体请参考4.1.1的属性选项):
选项名称 描述
-anchor 获得Label中图片当前位置
-background 获得Label的背景颜色
-bitmap 获得Label上当前所显示的位图
-borderwidth 获得Label的边框线宽度
-cursor 获得Label上鼠标指针形状
-font 获得Label字体格式
-foreground 获得Label前景颜色
-height 获得Label的高度
-image 获得Label上所显示的图片
-justify 获得Label中多行文本的对齐方向
-padx 获得Label的左右空间
-pady 获得Label的上下空间
-relief 获得Label的显示风格
-takefocus 获得Label是否可以成为键盘输入焦点
-text 获得Label中所显示的文本内容
-textvariable 获得Label所指定的变量


4.1.4 Label的用处
Label是任何图形程序的基础,不论是Perl/Tk还是WindowsGUI或是Java Swing都会包含最基本的Label。Label的使用让图形界面变的更加亲切有好感。真正的完整的图形效果开始于这里。

图形界面的标题:
可以将Label放置在图形界面显著的位置,用来做标题。
例子4.1.4-1.pl:
(主要内容就是产生一个Label标签,并且让他的位置正好象个标题,当然最好在做一些其他东西(即使这些东西现在没学到)衬托一下Label标题)

用户输入提示:
Label还可以用做提示用户所需要输入的内容,或报告用户输入内容是否正确。使用configure(-text=>’新内容’)可以轻松改变Label上当前所显示的内容

状态信息栏:
几乎现在所有的友善图形界面都包含有状态栏,用来显示一些没地方放,又可以知道当前状态信息。
例子4.1.4-2.pl:
(请产生一个Label标签,并且记得使用textvariable属性,然后要具体说明好这个东西,可以参考learning Perl中介绍Label的地方教的Label状态栏的内容)

关于Tk的资料会陆续登出,请见http://hoowa.tab.net.cn中的perl/tk图形设计 栏目
作者:hoowa
禁止任何商业网站或杂志转载
----
生平网上骗MM,发现乃荒无用事,方才年纪轻轻时,为何如此不的志。
[Original] [Print] [Top]
Subject: Re: Tk::Label介绍
Author: wind    Posted: 2003-01-04 13:09    Length: 6 byte(s)
[Original] [Print] [Top]
好东东
----
生容易,活容易,生活不容易
[Original] [Print] [Top]
Subject: Re: Tk::Label介绍
Author: hoowa    Posted: 2003-01-06 13:33    Length: 8 byte(s)
[Original] [Print] [Top]
请多指教
----
生平网上骗MM,发现乃荒无用事,方才年纪轻轻时,为何如此不的志。
[Original] [Print] [Top]
« Previous thread
[讨教] 请问在Redhat已经装好perl的机器上如何升级到5.8.0 ?
Perl 编 程
10
Next thread »
寻求帮助-转换邮件的编码格式!各位一定要帮帮我呀!
     

Copyright © 2007 UNIX Resources Network, All Rights Reserved.      About URN | Privacy & Legal | Help | Contact us
备案序号: 京ICP备05006143    webmaster: webmaster@unixresources.net
This page created on 2008-07-17 04:09:18, cost 0.044507026672363 ms.