Ruby/TK - 比例小部件


描述

Scale是一个显示矩形槽和小滑块的小部件波谷对应于一系列实际值(由“起始”、“结束”和“分辨率”选项确定),滑块的位置选择特定的实际值。

比例小部件中可以显示三个注释 -

  • 出现在小部件右上角的标签(水平缩放的左上角)。

  • 显示在滑块左侧的数字(水平比例的滑块正上方)。

  • 当前值左侧的数字刻度线集合(位于水平刻度的谷底下方)。

这三个注释中的每一个都可以使用配置选项启用或禁用。

句法

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

TkScale.new {
   .....Standard Options....
   .....Widget-specific Options....
}

标准选项

  • 活动背景
  • 背景
  • 边框宽度
  • 光标
  • 字体
  • 前景
  • 突出显示背景
  • 突出显示颜色
  • 突出显示厚度
  • 东方
  • 宽慰
  • 重复延迟
  • 重复间隔
  • 聚焦
  • 槽色

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

小部件特定选项

先生。 选项和说明
1

大增量 =>整数

与秤的某些相互作用会导致其值发生较大增量变化;该选项指定大增量的大小。如果指定为 0,则大增量默认为比例范围的 1/10。

2

命令 =>字符串

指定每当通过方法更改比例值时要调用的 Ruby/Tk 回调的前缀。

3

数字 =>整数

一个整数,指定将比例值转换为字符串时应保留多少位有效数字。如果数字小于或等于零,则比例尺会选择最小值,以保证每个可能的滑块位置都打印为不同的字符串。

4

来自 =>整数

与刻度的左端或上端相对应的实数值。

5

标签 =>字符串

显示为刻度标签的字符串。对于垂直刻度,标签显示在刻度顶端的右侧。对于水平刻度,标签显示在刻度左端的正上方。

6

长度 =>整数

以屏幕单位指定刻度所需的长尺寸

7

分辨率 =>整数

指定比例分辨率的实数值。如果该值大于零,则刻度的值将始终四舍五入为该值的偶数倍,刻度线和刻度的端点也是如此。如果该值小于零,则不会发生舍入。默认为 1

8

显示值 => 布尔值

指定一个布尔值,指示是否显示比例的当前值。

9

滑块长度 =>整数

指定滑块的大小,沿滑块的长尺寸以屏幕单位测量。

10

sliderrelief =>字符串

指定绘制滑块时要使用的浮雕,例如凸起凹陷

11

状态 =>字符串

指定刻度的三种状态之一:正常活动禁用

12

刻度间隔 =>整数

必须是真实值。确定滑块下方或左侧显示的数字刻度线之间的间距。如果为 0,则不显示刻度线。

13

=>整数

指定对应于刻度的右端或下端的实际值。该值可以小于或大于from选项。

14

变量 =>变量

指定链接到比例的全局变量的名称。每当变量的值发生变化时,比例就会更新以反映该值。每当以交互方式操作比例时,变量都会被修改以反映比例的新值。

15

宽度 =>整数

以屏幕单位指定所需的槽窄尺寸

操纵秤

以下方法可用于缩放小部件 -

  • coords(?value?)返回一个列表,其元素是沿槽中心线与 value 相对应的点的 x 和 y 坐标。如果省略 value,则使用比例的当前值。

  • get(?x, y?)如果省略 x 和 y,则返回比例的当前值。如果指定了 x 和 y,它们给出小部件内的像素坐标;该命令返回与给定像素对应的比例值。

  • recognize(x, y)返回一个字符串,指示比例尺的哪一部分位于xy给定的坐标下方。slider的返回值表示该点位于滑块之上;trough1表示该点位于滑块上方或左侧的滑块部分之上;trough2表示该点位于滑块下方右侧的滑块部分之上。

  • set(value)调用此命令可以更改比例的当前值,从而更改滑块的显示位置。值给出了比例的新值。如果禁用比例,该命令无效。

事件绑定

Ruby/Tk 自动为标度创建类绑定,为它们提供以下默认行为。如果垂直和水平尺度的行为不同,则水平行为在括号中描述。

  • 如果在槽中按下按钮 1,则比例值将增加或减少分辨率选项的值,以便滑块沿光标方向移动。如果按住该按钮,该操作会自动重复。

  • 如果在滑块上按下按钮 1,则可以用鼠标拖动滑块。

  • 如果在按住 Control 键的情况下按下槽中的按钮 1,滑块将朝鼠标光标的方向一直移动到其范围的末端。

  • 如果按下按钮 2,则比例值将设置为鼠标位置。如果按下按钮 2 并拖动鼠标,则比例值会随着拖动而改变。

  • 向上和向左键将滑块向上(向左)移动分辨率选项的值。

  • 向下和向右键将滑块向下(向右)移动分辨率选项的值。

  • Control-Up 和 Control-Left 将滑块向上(向左)移动 bigIncrement 选项的值。

  • Control-Down 和 Control-Right 将滑块向下(向右)移动 bigIncrement 选项的值。

  • Home 将滑块移动到其范围的上(左)端。

  • End 将滑块移至其范围的下(右)端。

如果使用 state 选项禁用比例,则上述绑定都不会产生任何效果。

例子

require "tk"

$scale = TkScale.new {
   orient 'horizontal'
   length 280
   from 0
   to 250
   command (proc {printheight})
   tickinterval 50
   pack
}

def printheight
   height = $scale.get()
   print height, "\n"
end

Tk.mainloop

这将产生以下结果 -

红宝石/Tk 音阶
ruby_tk_guide.htm