Ruby/TK - 单选按钮部件



描述

一个单选按钮允许您在一组互斥选项中选择一个,与复选框不同,它不限于仅两个选项。单选按钮始终一起用在一组中,并且在选项数量较少时非常适用。

单选按钮可以显示文本字符串、位图或图像,以及一个称为指示器的菱形或圆形。如果显示文本,则所有文本都必须使用单一字体,但它可以在屏幕上占据多行(如果包含换行符或由于wraplength选项导致换行),并且可以使用underline选项可选地对其中一个字符进行下划线。

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

语法

以下是如何创建此部件的简单语法:

TkRadiobutton.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 自动为 Radiobutton 创建类绑定,从而为其提供以下默认行为:

  • 每当鼠标经过单选按钮时,它都会激活;当鼠标离开单选按钮时,它会停用。

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

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

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

示例

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 Radiobutton
ruby_tk_guide.htm
广告