Ruby/TK - 单选按钮小部件


描述

单选按钮允许您在多个互斥选项之一中进行选择,与复选按钮不同,它不仅限于两个选项。单选按钮总是在一组中一起使用,当选择数量相当小时,单选按钮非常有用。

单选按钮可以显示文本字符串、位图或图像以及称为指示器的菱形或圆形。如果显示文本,则它必须全部采用单一字体,但它可以在屏幕上占据多行(如果它包含换行符或由于wraplength选项而发生换行,并且可以选择使用下划线为其中一个字符加下划线选项。

复选按钮具有简单按钮的所有行为,包括以下内容: 根据状态选项,它可以以三种不同方式之一显示自身;可以使其看起来凸起、凹陷或平坦;可以使其闪烁;每当在复选按钮上单击鼠标按钮 1 时,它都会调用 Tcl 命令。

句法

这是创建此小部件的简单语法 -

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

标准选项

  • 活动背景
  • 活跃前景
  • 背景
  • 位图
  • 边框宽度
  • 化合物
  • 光标
  • 禁用前景
  • 字体
  • 前景
  • 突出显示背景
  • 突出显示颜色
  • 突出显示厚度
  • 图像
  • 证明合法
  • 帕德克斯
  • 稻田
  • 宽慰
  • 聚焦
  • 文本
  • 文本变量
  • 强调
  • 包裹长度

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

小部件特定选项

先生。 选项和说明
1

命令=>字符串

Sp指定与按钮关联的 Ruby 命令。当在按钮窗口上释放鼠标按钮 1 时,通常会调用此命令。您可以在此处关联要在鼠标单击时执行的 Ruby 方法。可以使用命令选项调用的内置函数 -

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

  • flash - 使检查按钮闪烁。这是通过多次重新显示复选按钮并在活动颜色和正常颜色之间交替来完成的。

  • select - 选择复选按钮并将关联变量设置为其“on”值。

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

2

高度 => 整数

指定按钮所需的高度。

3

指示符 => 布尔值

指定是否应绘制指示器。必须是正确的布尔值。如果为false,则浮雕选项将被忽略,并且如果选择了小部件并以其他方式升起,则小部件的浮雕始终会凹陷。

4

偏移值 => 整数

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

5

=> 整数

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

6

选择颜色 =>字符串

指定选择按钮时要使用的背景颜色。如果指示符为真,则颜色适用于指示符。如果Indicatoron为 false,则每当选择小部件时,都会使用此颜色作为整个小部件的背景,代替backgroundactivebackground 。

7

选择图像 =>图像

指定选择复选按钮时要显示的图像(代替图像选项)。除非指定了图像选项,否则该选项将被忽略。

8

状态 => 字符串

指定按钮的三种状态之一:正常 、 活动 或 禁用。在正常状态下,按钮使用前景背景选项显示。当指针位于按钮上方时通常使用活动状态。在活动状态下,按钮使用activeforegroundactivebackground选项显示。禁用状态意味着按钮应该不敏感。

9

变量 => 变量

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

10

宽度 => 整数

指定按钮所需的宽度。

事件绑定

Ruby/Tk 自动为 Radiobutton 创建类绑定,为它们提供以下默认行为 -

  • 当鼠标经过单选按钮时,单选按钮就会激活,而当鼠标离开单选按钮时,单选按钮就会停用。

  • 当在单选按钮上按下鼠标按钮 1 时,将调用它(其选择状态切换,并调用与该按钮关联的命令(如果有))。

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

如果单选按钮的状态被禁用,则上述任何操作都不会发生:单选按钮完全没有响应。

例子

require "tk"

def print_v
   print $v, "\n"
end

$v = TkVariable.new

TkRadioButton.new { 
   text 'top'
   variable $v
   value 'top'
   anchor 'w'
   pack('side' => 'top', 'fill' => 'x')
}
TkRadioButton.new {
   text 'middle'
   variable $v
   value 'middle'
   anchor 'w'
   pack('side' => 'top', 'fill' => 'x')
}
TkRadioButton.new {
   text 'bottom'
   variable $v
   value 'bottom'
   anchor 'w'
   pack('side' => 'top', 'fill' => 'x')
}

TkButton.new {
   text 'Quit'
   command 'exit'
   pack
}

Tk.root.bind "1", proc{print_v}

Tk.mainloop

这将产生以下结果 -

Ruby/Tk 单选按钮
ruby_tk_guide.htm