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 指定绘制滑块时要使用的浮雕,例如 raised 或 sunken。 |
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) 返回一个字符串,指示比例尺的哪一部分位于 x 和 y 给定的坐标下。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
这将产生以下结果 −