- Ruby 基础
- Ruby - 首页
- Ruby - 概述
- Ruby - 环境搭建
- Ruby - 语法
- Ruby - 类和对象
- Ruby - 变量
- Ruby - 运算符
- Ruby - 注释
- Ruby - IF...ELSE
- Ruby - 循环
- Ruby - 方法
- Ruby - 块
- Ruby - 模块
- Ruby - 字符串
- Ruby - 数组
- Ruby - 哈希表
- Ruby - 日期和时间
- Ruby - 范围
- Ruby - 迭代器
- Ruby - 文件 I/O
- Ruby - 异常
Ruby/TK - 微调框部件
描述
一个微调框部件允许用户选择数字(或者实际上,从任意列表中选择项目)。它是通过组合一个显示当前值的类似输入框的部件和一对小的向上/向下箭头来实现的,这些箭头可以用来逐步遍历可能的选项范围。
微调框能够显示超出部件窗口大小的字符串。在这种情况下,只会显示字符串的一部分;下面描述的命令可用于更改窗口中的视图。
微调框使用标准的xscrollcommand机制与滚动条交互。
语法
这是一个创建此部件的简单语法:
TkSpinbox.new(root) { .....Standard Options.... .....Widget-specific Options.... }
标准选项
- activebackground
- background
- borderwidth
- cursor
- exportselection
- font
- foreground
- highlightbackground
- highlightcolor
- highlightthickness
- justify
- relief
- repeatdelay
- repeatinterval
- selectbackground
- selectborderwidth
- selectforeground
- takefocus
- textvariable
- xscrollcommand
这些选项已在上一章中进行了描述。
部件特定选项
序号 | 选项和描述 |
---|---|
1 | buttonbackground => 字符串 用于微调按钮的背景颜色。 |
2 | buttoncursor => 字符串 用于微调按钮上的光标。如果为空(默认值),则将使用默认光标。 |
3 | buttondownrelief => 字符串 用于向上微调按钮的样式。 |
4 | command => 字符串 指定一个 Ruby/Tk 回调函数,每当调用微调框时都会调用。该回调函数在其现有回调参数中附加了这两个参数:部件的当前值和按钮按下方向(up 或 down)。 |
5 | disabledbackground => 字符串 指定微调框禁用时使用的背景颜色。如果此选项为空字符串,则使用普通背景颜色。 |
6 | disabledforeground => 字符串 指定微调框禁用时使用的前景色。如果此选项为空字符串,则使用普通前景色。 |
7 | format => 字符串 使用from 和to 范围设置字符串值时,指定要使用的备用格式。 |
8 | from => 整数 对应于微调框的最低值的浮点数,与to 和increment结合使用。 |
9 | increment => 字符串 指定增量的浮点数。与from 和to一起使用时,按下微调按钮时,部件中的值将按increment调整(向上添加值,向下减去值)。 |
10 | state => 字符串 指定微调框的三种状态之一:normal、disabled 或 readonly。 |
11 | to => 整数 对应于微调框的最高值的浮点数,与from 和increment结合使用。当所有选项都正确指定时,微调框将使用这些值来控制其内容。此值必须大于from选项。如果指定了values,则它将取代此选项。 |
12 | validate => 字符串 指定验证应操作的模式:none、focus、focusin、focusout、key 或 all。默认为none。当需要验证时,必须明确说明要使用哪个模式。 |
13 | validatecommand => 字符串 指定要验证部件中的输入时要评估的脚本。 |
14 | values => 整数 必须是正确的列表值。如果指定,微调框将使用这些值来控制其内容,从第一个值开始。此选项优先于from 和to 范围。 |
15 | width => 整数 指定一个整数,表示所需微调框窗口的宽度,以部件字体的平均大小字符为单位。 |
16 | wrap => 布尔值 必须是正确的布尔值。如果开启,微调框将环绕部件中数据的数值。 |
验证阶段
验证通过将validatecommand选项设置为回调函数来工作,该回调函数将根据validate选项如下评估:
none - 默认值。这意味着不会发生验证。
focus - 当微调框获得或失去焦点时,将调用validatecommand。
focusin - 当微调框获得焦点时,将调用validatecommand。
focusout - 当微调框失去焦点时,将调用validatecommand。
key - 当编辑微调框时,将调用validatecommand。
all - 对所有上述情况都将调用validatecommand。
操作微调框
以下是一些用于操作微调框的重要方法:
delete(first, ?last?) - 删除微调框的一个或多个元素。First 是要删除的第一个字符的索引,last 是要删除的最后一个字符之后的字符的索引。如果未指定last,则默认为first+1,即删除单个字符。此命令返回空字符串。
get - 返回微调框的字符串。
icursor(index) - 安排显示插入光标,位于索引指定的字符之前。返回空字符串。
identify(x, y) - 返回对应于微调框中坐标x 和y 的窗口元素的名称。返回值之一为:none、buttondown、buttonup、entry。
index(index) - 返回对应于索引的数值索引。
insert(index, string) - 将字符串的字符插入到索引指示的字符之前。返回空字符串。
invoke(element) - 使指定的元素(buttondown 或 buttonup)被调用,从而触发与其关联的操作。
set(?string?) - 如果指定了字符串,微调框将尝试将其设置为该值,否则它只返回微调框的字符串。如果验证已开启,则在设置字符串时将进行验证。
validate - 此命令用于强制评估validatecommand,而与validate选项指定的条件无关。这是通过暂时将validate选项设置为all来完成的。它返回0或1。
xview(args) - 此命令用于查询和更改部件窗口中文本的水平位置。
事件绑定
Tk 自动为微调框创建类绑定,赋予它们默认行为。一些重要的行为如下:
单击鼠标按钮 1,将插入光标定位在鼠标光标下方的字符之前,将输入焦点设置为该部件,并清除部件中的任何选择。使用鼠标按钮 1 拖动,会在插入光标和鼠标下方的字符之间划出一段选择。
双击鼠标按钮 1,选择鼠标下的单词并将插入光标定位在单词的开头。双击后拖动将划出一段由整个单词组成的选择。
三次单击鼠标按钮 1,选择微调框中的所有文本并将插入光标定位在第一个字符之前。
按下 Shift 键的同时使用鼠标按钮 1 拖动可以调整选择的端点;这将调整按下按钮 1 时最靠近鼠标光标的选择端点。如果在拖动前双击按钮,则选择将以整个单词为单位进行调整。
按下 Control 键的同时单击鼠标按钮 1,将定位微调框中的插入光标,而不会影响选择。
如果在微调框中键入任何正常的打印字符,它们将插入到插入光标的位置。
可以使用鼠标按钮 2 拖动来调整微调框中的视图。如果单击鼠标按钮 2 而没有移动鼠标,则选择将复制到鼠标光标位置的微调框中。
如果在按下按钮 1 的同时将鼠标拖出微调框的左侧或右侧,则微调框将自动滚动以显示更多文本(如果鼠标离开窗口的侧面上有更多文本未显示)。
End 键或 Control-e 将将插入光标移动到微调框的末尾并清除微调框中的任何选择。Shift-End 将光标移动到末尾并将选择扩展到该点。
Home 键或 Control-a 将将插入光标移动到微调框的开头并清除微调框中的任何选择。Shift-Home 将插入光标移动到微调框的开头并将选择扩展到该点。
Control-/ 选择微调框中的所有文本。
Control-\ 清除微调框中的任何选择。
如果旋钮框中有选中内容,则 Delete 键会删除选中内容。如果没有选中内容,则会删除插入光标右侧的字符。
如果旋钮框中有选中内容,则 BackSpace 键和 Control-h 会删除选中内容。如果没有选中内容,则会删除插入光标左侧的字符。
Control-d 删除插入光标右侧的字符。
Meta-d 删除插入光标右侧的单词。
Control-k 删除插入光标右侧的所有字符。
示例
require 'tk' root = TkRoot.new root.title = "Window" Sb = TkSpinbox.new(root) do to 100 from 5 increment 5 pack("side" => "left", "padx"=> "50", "pady"=> "50") end Tk.mainloop
这将产生以下结果: