Ruby/TK - 复选框控件



描述

复选框类似于普通按钮,但它不仅可以被用户按下(这将调用命令回调),还可以保存某种二进制值(即切换)。当用户被要求在例如选项的两个不同值之间进行选择时,复选框经常被使用。

复选框可以显示文本字符串、位图或图像。如果显示文本,则所有文本都必须使用单一字体,但它可以占据屏幕上的多行(如果包含换行符或由于wraplength选项导致换行),并且可以使用underline选项将其中一个字符可选地加下划线。

复选框具有简单按钮的所有行为,包括以下内容:它可以根据state选项以三种不同的方式显示自身;它可以设置为凸起、凹陷或平坦;它可以设置为闪烁;并且每当鼠标按钮1点击复选框时,它都会调用Tcl命令。

语法

这是一个创建此控件的简单语法:

TkCheckButton.new(root) {
   .....Standard Options....
   .....Widget-specific Options....
}

标准选项

  • activebackground
  • activeforeground
  • anchor
  • background
  • bitmap
  • borderwidth
  • compound
  • cursor
  • disabledforeground
  • font
  • foreground
  • highlightbackground
  • highlightcolor
  • highlightthickness
  • image
  • justify
  • padx
  • pady
  • relief
  • takefocus
  • text
  • textvariable
  • underline
  • wraplength

这些选项已在上一章中进行了描述。

控件专用选项

序号 选项和描述
1

command => 字符串

指定与按钮关联的Ruby命令。此命令通常在鼠标按钮1在按钮窗口上释放时调用。在这里,您可以关联一个Ruby方法,该方法将在鼠标点击时执行。可以使用command选项调用的内置函数:

  • deselect - 取消选中复选框并将关联变量设置为其“关闭”值。

  • flash - 闪烁复选框。这是通过多次重新显示复选框来实现的,在活动颜色和普通颜色之间交替。

  • select - 选中复选框并将关联变量设置为其“打开”值。

  • toggle - 切换按钮的选择状态,重新显示它并修改其关联变量以反映新状态。

2

height => 整数

指定按钮的所需高度。

3

indicatoron => 布尔值

指定是否应绘制指示器。必须是正确的布尔值。如果为false,则忽略relief选项,并且如果控件已选中,则控件的浮雕始终为凹陷,否则为凸起。

4

offvalue => 整数

指定每当取消选中此按钮时,要存储在按钮关联变量中的值。默认为0。

5 onvalue => 整数

指定每当选中此按钮时,要存储在按钮关联变量中的值。默认为1。

6

selectcolor => 字符串

指定选中按钮时使用的背景颜色。如果indicatoron为true,则颜色应用于指示器。如果indicatoron为false,则每当控件被选中时,此颜色将用作整个控件的背景,代替backgroundactivebackground

7

selectimage => 图片

指定在选中复选框时显示的图片(代替image选项)。除非已指定image选项,否则此选项将被忽略。

8

state => 字符串

指定按钮的三种状态之一:normal、active或disabled。在正常状态下,按钮使用foregroundbackground选项显示。活动状态通常在指针位于按钮上时使用。在活动状态下,按钮使用activeforegroundactivebackground选项显示。禁用状态意味着按钮应该是无响应的。

9

variable => 变量

指定要设置为指示此按钮是否已选中的全局变量的名称。默认为其父级中按钮的名称。

10

width => 整数

指定按钮的所需宽度。

事件绑定

Ruby/Tk自动为复选框创建类绑定,使其具有以下默认行为:

  • 每当鼠标经过复选框时,复选框就会激活;每当鼠标离开复选框时,复选框就会停用。

  • 当鼠标按钮1按下复选框时,它会被调用(它的选择状态切换,并且如果存在与按钮关联的命令,则该命令会被调用)。

  • 当复选框具有输入焦点时,空格键会导致复选框被调用。

如果复选框的状态为disabled,则上述任何操作都不会发生:复选框完全无响应。

示例

require 'tk'

root = TkRoot.new
root.title = "Window"

CkhButton1 = TkCheckButton.new(root) do
   text "Orange"
   indicatoron "true"
   background  "red"
   relief "groove"
   height 2
   width 2
   onvalue 'Orange'
   place('height' => 25,'width'  => 100, 'x' => 10, 'y'=> 10)
   command (select)
end

CkhButton2 = TkCheckButton.new(root) do
   text "Banana"
   background  "red"
   relief "groove"
   height 2
   width 2
   onvalue 'Banana'
   place('height' => 25,'width' => 100, 'x' => 10, 'y'=> 40)
end
Tk.mainloop

这将产生以下结果:

Ruby/Tk Checkbox
ruby_tk_guide.htm
广告