Ruby/TK - 缩放部件



描述

缩放部件显示一个矩形槽和一个小的滑块。槽对应于一个实数值范围(由 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 =>整数

与缩放部件的一些交互会导致其值以增量更改;此选项指定大增量的尺寸。如果指定为 0,则大增量默认为缩放范围的 1/10。

2

command =>字符串

指定每当通过方法更改缩放部件的值时要调用的 Ruby/Tk 回调的前缀。

3

digits =>整数

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

4

from =>整数

对应于缩放部件左侧或顶端的实数值。

5

label =>字符串

要显示为缩放部件标签的字符串。对于垂直缩放部件,标签显示在缩放部件顶端右侧。对于水平缩放部件,标签显示在缩放部件左侧上方。

6

length =>整数

指定缩放部件所需的长尺寸(以屏幕单位为单位)。

7

resolution =>整数

指定缩放部件分辨率的实数值。如果此值大于零,则缩放部件的值将始终四舍五入到此值的偶数倍,刻度线和缩放部件的端点也是如此。如果该值小于零,则不进行舍入。默认为 1。

8

showvalue =>布尔值

指定一个布尔值,指示是否要显示缩放部件的当前值。

9

sliderlength =>整数

指定滑块的大小(以屏幕单位为单位,沿滑块的长尺寸)。

10

sliderrelief =>字符串

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

11

state =>字符串

指定缩放部件的三种状态之一:normalactivedisabled

12

tickinterval =>整数

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

13

to =>整数

指定对应于缩放部件右侧或底部的实数值。此值可以小于或大于from选项。

14

variable =>变量

指定要链接到缩放部件的全局变量的名称。每当变量的值更改时,缩放部件都会更新以反映此值。每当以交互方式操作缩放部件时,变量都会修改以反映缩放部件的新值。

15

width =>整数

指定槽所需窄尺寸(以屏幕单位为单位)。

操作缩放部件

缩放部件可以使用以下方法:

  • coords(?value?) 返回一个列表,其元素是对应于 value 的槽中心线上的点的 x 和 y 坐标。如果省略 value,则使用缩放部件的当前值。

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

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

  • set(value) 此命令用于更改缩放部件的当前值,从而更改显示滑块的位置。Value 给出缩放部件的新值。如果缩放部件被禁用,则此命令无效。

事件绑定

Ruby/Tk 自动为缩放部件创建类绑定,使它们具有以下默认行为。如果垂直和水平缩放部件的行为不同,则描述水平行为(括号内)。

  • 如果在槽中按下按钮 1,则缩放部件的值将按 resolution 选项的值递增或递减,以便滑块沿光标方向移动。如果按住按钮,则操作会自动重复。

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

  • 如果在槽中按下按钮 1 且同时按下 Control 键,则滑块将移动到其范围的末端,方向朝向鼠标光标。

  • 如果按下按钮 2,则缩放部件的值将设置为鼠标位置。如果在按下按钮 2 的情况下拖动鼠标,则缩放部件的值会随着拖动而更改。

  • 向上键和向左键使滑块向上(向左)移动 resolution 选项的值。

  • 向下键和向右键使滑块向下(向右)移动 resolution 选项的值。

  • 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_guide.htm
广告