Ruby/TK - Scale 缩放小部件

说明

Scale 是一个显示矩形槽和小滑块的小部件。 波谷对应一个实数值范围(由 from、to 和 resolution 选项确定),滑块的位置选择一个特定的实数值。

三个注释可以显示在一个比例小部件中 −

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

  • 显示在滑块左侧的数字(就在水平刻度的滑块上方)。

  • 当前值左侧的一组数字刻度线(就在水平刻度的波谷下方)。

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

语法

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

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

标准选项

  • activebackground
  • background
  • borderwidth
  • cursor
  • font
  • foreground
  • highlightbackground
  • highlightcolor
  • highlightthickness
  • orient
  • relief
  • repeatdelay
  • repeatinterval
  • takefocus
  • troughcolor

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


小部件特定选项

序号 选项 & 描述
1

bigincrement =>Integer

与刻度的一些交互会导致其值以large增量变化; 此选项指定大增量的大小。 如果指定为 0,则大增量默认为比例范围的 1/10。

2

command =>String

指定 Ruby/Tk 回调的前缀,以在通过方法更改比例值时调用。

3

digits =>Integer

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

4

from =>Integer

对应于刻度的左端或顶端的实数值。

5

label =>String

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

6

length =>Integer

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

7

resolution =>Integer

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

8

showvalue =>Boolean

指定一个布尔值,指示是否要显示刻度的当前值。

9

sliderlength =>Integer

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

10

sliderrelief =>String

指定绘制滑块时要使用的浮雕,例如 raisedsunken

11

state =>String

指定秤的三种状态之一: normal, active, disabled.

12

tickinterval =>Integer

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

13

to =>Integer

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

14

variable =>Variable

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

15

width =>Integer

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


操纵 Scales

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

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

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

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

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


事件绑定

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

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

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

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

  • 如果按下按钮 2,则刻度值将设置为鼠标位置。 如果按下按钮 2 拖动鼠标,则刻度的值会随着拖动而变化。

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

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

  • 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

这将产生以下结果 −

Ruby/Tk Scale

❮ Ruby Tk 指南