文档章节

tcl/tk组件一些属性的解释说明

D
 D-dragon
发布于 2014/08/07 14:49
字数 2301
阅读 394
收藏 0

使用屏幕单位的选项,取值为:不带单位字母时为像素,单位字母为--c(厘米) ,i(英寸),m (毫米),p(点)。
    -activebackground => color
    指定激活组件的背景颜色。
    -activeborderwidth => width
    指定激活组件的宽度,使用屏幕单位。
    -activeforeground => color
    指定激活组件的前景颜色。
    -anchor => anchorPos
    组件的布局位置,有效值为:n, ne, e, se, s, sw, w, nw 和 center。
    -background => color
    组件处于正常状态时的背景颜色。
    -bitmap => bitmap
    指定显示在组件中的位图 ( error, gray12,  gray25,  gray50,  gray75,
hourglass,info, questhead, question, warning, @pathName)。
    -borderwidth => width
    组件处于正常状态时的边界宽度,使用屏幕单位。
    -command => callback
    指定唤醒组件时所运行 Perl/Tk 回调过程。
    -cursor => [bitmap, mask, foreground, background]
    描述当鼠标指针指向组件时,光标显示状态的一个数组指针。
    -disabledforeground => color
    组件处于无效状态时的前景颜色。
    -exportselection => boolean
    指定组件的选择是否是 X 方向选择。选项取值为 true,false,0,1,yes和no。
如果选择已经导出,组件内的选择将取消当前选择,组件外的选择将取消任何组
件选择,当组件有选择时,组件响应选择。组件的默认情况是导出选择。
    -font => font
    组件中文本使用的字体。
    -foreground => color
    组件处于正常状态时的前景颜色。
    -highlightbackground => color
    指定组件不具有输入聚焦时它周围矩形框的颜色。
    -highlightcolor => color
    指定组件具有输入聚焦时它周围矩形框的颜色。
    -highlightthickness => width
    指定组件具有输入聚焦时它周围矩形框的宽度,使用屏幕单位。
    -image => image
    指定显示在组件中的图像(细节请看图像一章)。
    -insertbackground => color
    指定插入光标覆盖区域的背景颜色。
    -insertborderwidth => width
    指定插入光标边界的宽度,使用屏幕单位。
    -insertofftime => milliseconds
    指定在每一闪烁循环中插入光标保持“off”状态的时间,单位千分秒。
    -insertontime => milliseconds
    指定在每一闪烁循环中插入光标保持“on”状态的时间,单位千分秒。
    -insertwidth => width
    指定插入光标的宽度,使用屏幕单位。
    -jump => boolean
    指定附着在组件上的滚动杆和刻度盘是否延迟到鼠标键松开时才更新。
    -justify => left center right
    指定多线条排列时的对齐方式。 left,线条左对齐; center,线条居中对
齐;right,线条右对齐;
    -orient => horizontal vertical
    指定组件的布局方向,例如滚动杆可以水平布局,也可以纵向布局。
    -padx => width
    在 X 方向组件所需要的额外空间, 使用屏幕单位。计算所需空间时,组
件将这个数值加在正常情况所需的空间数值(由显示在组件中物件的宽度决定)
上;如果几何管理器能满足这个要求,组件将额外的内部空间用于它的左边或者
右边。大多数组件只将这个选项用于填充文本:当显示位图或图像时,忽略该选
项。
    -pady => height
    在 Y 方向组件所需要的额外空间,使用屏幕单位。解释参看上一条。
    -relief => flat groove raised ridge sunken
    指定组件边框的3-D效果。 flat, 扁平; groove,凹槽;raised,凸起;
ridge,山脊; sunken,下凹的。
    -repeatdelay => milliseconds
    必须在自动重复的多少时间前,按下一个按钮或按键才有效,单位千分秒。
    -repeatinterval => milliseconds
    动作开始后,自动重复之间的间隔时间,单位千分秒。
    -selectbackground => color
    指定选择项目的背景颜色。
    -selectborderwidth => width
    指定选择项目的宽度,使用屏幕单位。
    -selectforeground => color
    指定选择项目的前景颜色。
    -setgrid => boolean
    这个组件是否控制它的顶层窗口的调整网格。这个选项用于文本组件时很典
型,组件中的信息有天然尺寸(一个字符的尺寸),这个天然的尺寸组成一个网
格,这个选项负责使窗口的容积成为网格的整数倍。如果选项为真时,组件同窗
口管理器进行通信,当用户调整包含该组件的顶层窗口时,窗口容积以网格为单
位显示,窗口尺寸紧缩为网格单位的整数倍。
    -state => actived normal disabled (用于按钮类组件)
    指定组件的当前状态。
    -takefocus => focusType
    提供通过键盘遍历窗口(例如,Tab和Shift+Tab)时窗口的聚焦信息。在给
一个窗口设置聚焦前, 遍历脚本首先检查窗口是否可见 ;如果不可见,跳过该
窗口。 其次,检查 takefocus 选项值。如果是0,组件永远不聚焦;1,组件经
常聚焦;如果是一个空值,由 Tk 决定该窗口是否聚焦:如果窗口处于无效状态
或者没有键绑定事件则跳过该窗口; 其余情况,将 focusType 作为一个回调执
行,将组件指针作为第一表达式,返回值必须是0,1或者一个空字符串。 注意:
该解释完全由运行遍历的回调脚本定义,组件的运用完全忽略该选项,重新定义
键盘遍历脚本可以改变它的含义。
    -text => string
    指定显示在组件中的文本。
    -textvariable => varRef
    指定变量。该变量的值是显示在组件内的一个字符串;如果变量值改变,组
件自动更新以反映新值。  字符串在组件中的显示方式依赖于特定组件和受例如
anchor 和 justify 等选项决定。
    -troughcolor => color
    指定滚动杆和刻度盘等组件中可移动的矩形区域的颜色。
    -underline => index
    指定组件中用作索引的字母,该字母下划线。该选项被用于运行菜单按钮和
按钮输入遍历的默认绑定使用。0对应组件中文本的第一个字母,1对应下一个字
母,等等。
    -wraplength => length
    指定整字换行情形时的最大行长度。一行上超过该长度的部分换行到第二行。
使用屏幕单位。长度小于或等于0,不换行,仅在遇到换行符时才另起一行。
    -xscrollcommand => callback
    指定用于同水平滚动杆通信的子过程和参数。
    -yscrollcommand => callback
    指定用于同纵向滚动杆通信的子过程和参数。

 

-ipadx =>amount $widgetbecomes larger in x direction by 2 ✕ amount.

-ipady =>amount $widgetbecomes larger in y direction by 2 ✕ amount.

-padx =>amount Buffer space equal to amount is placed to left and right of widget.

-pady =>amount Buffer space equal to amount is placed on top and bottom of widget.

一、上面的众多属性中,有些属性并不是说得很清楚,先说一下,关于布局方面的属性,先上个图:

代码也很简单:

require 'tk' 

root = TkRoot.new {
   title "布局测试"
   minsize(400,400)
}

TkButton.new(root) do  
  text "上边"  
  background "#ccc"
  pack('side'=>'top','fill'=>'x')
end 

TkButton.new do  
  text "下边"
  background "#ccc"
  pack('side'=>'bottom','fill'=>'x')
end 

TkButton.new do  
  text "左边" 
  background "#ccc"
  pack('fill'=>'y','side'=>'left')
end 

TkButton.new do  
  text "右边"  
  background "#ccc"
  pack('fill'=>'y','side'=>'right')
end 

TkButton.new do  
  text "中间"  
  pack('expand'=>'1')
end

Tk.mainloop

主要涉及到三个属性,一个是fill,一个是side,一个是expand。side很简单,上下左右,但是没有“center”,不过有个expand,这个属性默认为0,表示不自动扩展。fill是填充的意思,x、y或者both,向x、y轴扩展或者向两边都扩展。

另外,再说下anchor,这个属性可取的值有以下几个:

-anchor =>  'e' | 'w' | 'n' | 's' | 'ne' | 'nw' | 'se' | 'sw' | 'center'

这个nesw的全称是,east、west、north、south,所以这个东西看起来,也是做布局用的。实际上,这个属性和side还是不一样的,

Unless the -expand option is set to a true value, this won't seem to change much of anything in the window

用法如下:

TkButton.new do  
  text "中间"
  pack('expand'=>'1','anchor'=>'nw')
end

也就是说,设置了expand这个属性后,再设置anchor,才有明显的效果。东南西北随便怎么设置都是可以的。

 二、实际上,除了pack这种布局方式以外,还有另外两种方式,一种是place,另一种是grid。place用于指定组件的高度、宽度和坐标位置。用法大体如下:

place('height' => 25,'width'  => 150,'x'=>130,'y'=>50)

而grid,则是通过表格行和列的方式来实现布局。用法如下:

TkButton.new(root, 'text'=>'按钮1').grid('row'=>1,'column'=>1)
TkButton.new(root, 'text'=>'按钮2').grid('row'=>2,'column'=>2)
TkButton.new(root, 'text'=>'按钮3').grid('row'=>3,'column'=>3)
TkButton.new(root, 'text'=>'按钮4').grid('row'=>1,'column'=>3)
TkButton.new(root, 'text'=>'按钮5').grid('row'=>3,'column'=>1)

总结,上面三种布局方式中,最常用的是pack,另外两种起一种补充作用,布局这种东西,只要不是用VS之类的工具去实现,相对来说都比较麻烦。JAVA SWING中也有很多种布局,甚至还出现过一些第三方布局组件。可见这并不件事容易的事,我个人认为,TK这种几种布局虽然说不上非常优秀,但只要把这几种布局方式掌握好,基本上还是够用的。

 

 

 

© 著作权归作者所有

下一篇: ruby tk读取文件
D
粉丝 7
博文 44
码字总数 43763
作品 0
资阳
程序员
私信 提问
编程语言 Tcl/Tk 8.6.4 发布

编程语言 Tcl/Tk 8.6.4 发布,此版本现已提供下载: Download Tcl/Tk 8.6.4 Source Releases Download ActiveTcl 8.6.4 Binaries Tcl 8.6 值得关注的改进 面向对象编程:TclOO 包的命令现在也...

oschina
2015/03/13
3.6K
4
编程语言 Tcl/Tk 8.5.16 发布

Tcl/Tk 8.5.16 发布,更新内容如下: 同时还发布了 Tcl/Tk 8.6.2,更多内容请看这里,现已提供下载。 Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。 Tcl/...

MikeManilone
2014/08/26
2.2K
5
Tcl/Tk 8.6.5 发布,常用于信息产业领域的编程语言

Tcl/Tk 8.6.5 发布了,Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。 Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学...

MikeManilone
2016/03/05
3.1K
10
编程语言--Tcl/Tk

Tcl/Tk 是一种简明,高效,可移植性好的编程语言。在信息产业领域具有广泛的应用。 Tcl/Tk 的发明人 John Ousterhout 教授在八十年代初,是伯克利大学的教授。在其教学过程中,他发现在集成电...

匿名
2012/11/11
7.8K
0
脚本语言--Tcl

Tcl(最早称为“工具命令语言”"Tool Command Language",但是目前已经不是这个含义,不过我们仍然称呼它为TCL)是一种 脚本语言。由John Ousterhout创建。 TCL很好学,功能很强大。TCL经常被...

匿名
2009/07/20
20.3K
0

没有更多内容

加载失败,请刷新页面

加载更多

【0918】正则介绍_grep

【0918】正则介绍_grep 9.1 正则介绍_grep上 9.2 grep中 9.3 grep下 一、正则介绍 正则是一串有规律的字符串,它使用单个字符串来描述或匹配一系列符合某个语法规则的字符串。 二、grep工具 ...

飞翔的竹蜻蜓
33分钟前
4
0
为什么要在网站中应用CDN加速?

1. 网页加载速度更快 在网站中使用CDN技术最直接的一个好处就是它可以加快网页的加载速度。首先,CDN加速的内容分发是基于服务器缓存的,由于CDN中缓存了不少数据,它能够给用户提供更快的页...

云漫网络Ruan
今天
8
0
亚玛芬体育(Amer Sports)和信必优正式启动合作开发Movesense创新

亚玛芬体育和信必优正式启动合作开发Movesense创新,作为亚玛芬体育的完美技术搭档,信必优利用Movesense传感器技术为第三方开发移动应用和服务。 Movesense基于传感器技术和开放的API,测量...

symbiochina88
今天
4
0
创龙TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA核心板规格书

SOM-TL437xF是一款广州创龙基于TI AM437x ARM Cortex-A9 + Xilinx Spartan-6 FPGA芯片设计的核心板,采用沉金无铅工艺的10层板设计,适用于高速数据采集和处理系统、汽车导航、工业自动化等领...

Tronlong创龙
今天
5
0
好程序员Java学习路线分享MyBatis之线程优化

  好程序员Java学习路线分享MyBatis之线程优化,我们的项目存在大量用户同时访问的情况,那么就会出现大量线程并发访问数据库,这样会带来线程同步问题,本章我们将讨论MyBatis的线程同步问...

好程序员官方
今天
6
0

没有更多内容

加载失败,请刷新页面

加载更多

返回顶部
顶部