- 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 - Spinbox 小部件
描述
Spinbox小部件允许用户选择数字(或者实际上是任意列表中的项目)。它通过将显示当前值的类似条目的小部件与一对小的向上/向下箭头相结合来实现这一点,这些箭头可用于逐步浏览可能的选择范围。
Spinbox 能够显示太长而无法完全适合小部件窗口的字符串。在这种情况下,只会显示字符串的一部分;下面描述的命令可用于更改窗口中的视图。
Spinbox 使用标准xscrollcommand机制与滚动条交互。
句法
这是创建此小部件的简单语法 -
TkSpinbox.new(root) { .....Standard Options.... .....Widget-specific Options.... }
标准选项
- 活动背景
- 背景
- 边框宽度
- 光标
- 出口选择
- 字体
- 前景
- 突出显示背景
- 突出显示颜色
- 突出显示厚度
- 证明合法
- 宽慰
- 重复延迟
- 重复间隔
- 选择背景
- 选择边框宽度
- 选择前景
- 聚焦
- 文本变量
- xscroll命令
这些选项已在前一章中进行了描述。
小部件特定选项
先生。 | 选项和说明 |
---|---|
1 | 按钮背景 => 字符串 用于旋转按钮的背景颜色。 |
2 | 按钮光标 => 字符串 用于旋转按钮上方的光标。如果为空(默认),则将使用默认光标。 |
3 | Buttondownrelief => 字符串 用于上部旋转按钮的浮雕。 |
4 | 命令 =>字符串 指定每当调用 Spinbutton 时要调用的 Ruby/Tk 回调。回调将这两个参数附加到任何现有的回调参数中:小部件的当前值和按钮按下的方向(向上或向下)。 |
5 | 禁用背景 => 字符串 指定禁用旋转框时要使用的背景颜色。如果此选项为空字符串,则使用普通背景颜色。 |
6 | 禁用前景 => 字符串 指定禁用旋转框时要使用的前景色。如果此选项为空字符串,则使用正常的前景色。 |
7 | 格式 =>字符串 指定在使用起始范围和终止范围设置字符串值时要使用的替代格式。 |
8 | 来自 => 整数 与 Spinbox 的最低值相对应的浮点值,与to和increment结合使用。 |
9 | 增量 =>字符串 指定增量的浮点值。当与from和to一起使用时,按下旋转按钮时,小部件中的值将按增量进行调整(向上添加值,向下减去值)。 |
10 | 状态 => 字符串 指定 Spinbox 的三种状态之一:正常、禁用或只读。 |
11 | 到 => 整数 与 Spinbox 的最高值相对应的浮点值,与from和increment结合使用。当所有内容都正确指定后,Spinbox 将使用这些值来控制其内容。该值必须大于from选项。如果指定了值,它将取代此选项。 |
12 | 验证 =>字符串 指定验证操作的模式:none、focus、focusin、focusout、key或all。它默认为none。当您想要验证时,您必须明确说明您希望使用哪种模式。 |
13 | 验证命令 =>字符串 指定当您想要验证小部件中的输入时要评估的脚本。 |
14 | 值 => 整数 必须是正确的列表值。如果指定,Spinbox 将使用这些值来控制其内容,从第一个值开始。此选项优先于from和to范围。 |
15 | 宽度 => 整数 指定一个整数值,指示 Spinbox 窗口的所需宽度(以小部件字体的平均大小字符表示)。 |
16 | 换行 => 布尔值 必须是正确的布尔值。如果打开,Spinbox 将环绕小部件中的数据值。 |
验证阶段
验证通过将validatecommand选项设置为回调来进行,该回调将根据 validate 选项进行评估,如下所示 -
无- 默认。这意味着不会发生任何验证。
focus -当 Spinbox 接收或失去焦点时将调用validatecommand 。
focusin -当 Spinbox 接收焦点时将调用validatecommand 。
focusout -当 Spinbox 失去焦点时将调用validatecommand 。
key -编辑 Spinbox 时将调用validatecommand 。
all -对于上述所有条件将调用validatecommand 。
操纵旋转盒
以下是使用 Spinbox 的一些重要方法的列表 -
delete(first, ?last?) - 删除 Spinbox 的一个或多个元素。First是要删除的第一个字符的索引,last是要删除的最后一个字符之后的字符的索引。如果未指定last ,则默认为first +1,即删除单个字符。该命令返回一个空字符串。
get - 返回 Spinbox 的字符串。
icursor(index) - 安排插入光标显示在索引给定的字符之前。返回一个空字符串。
recognize(x, y) - 返回与 Spinbox 中的坐标x和y相对应的窗口元素的名称。返回值为以下之一:none、buttondown、buttonup、entry。
index(index) - 返回与索引相对应的数字索引。
insert(index, string) - 在索引指示的字符之前插入字符串的字符。返回一个空字符串。
invoke(element) - 导致指定的元素(buttondown或buttonup)被调用,触发与其关联的操作。
set(?string?) - 如果指定了字符串,Spinbox 将尝试将其设置为该值,否则它只返回 Spinbox 的字符串。如果启用验证,则会在设置字符串时发生。
validate - 该命令用于强制对validate 命令进行评估,而与validate选项指定的条件无关。这是通过暂时将validate选项设置为all来完成的。它返回 0 或 1。
xview(args) - 此命令用于查询和更改小部件窗口中文本的水平位置。
事件绑定
Tk 自动为 Spinbox 创建类绑定,赋予它们默认行为。下面给出了一些重要的行为 -
单击鼠标按钮 1,将插入光标定位在鼠标光标下方的字符之前,将输入焦点设置到该小部件,并清除小部件中的所有选择。使用鼠标按钮 1 进行拖动,在插入光标和鼠标下的字符之间划出一个选区。
双击鼠标按钮 1,选择鼠标下的单词并将插入光标定位在单词的开头。双击后拖动将划出由整个单词组成的选区。
用鼠标按钮 1 单击三次,选择旋转框中的所有文本,并将插入光标定位在第一个字符之前。
可以通过按住 Shift 键的同时使用鼠标按钮 1 拖动来调整选区的末端;当按下按钮 1 时,这将调整最接近鼠标光标的选择的末尾。如果在拖动之前双击该按钮,则将以整个单词为单位调整选择。
按住 Control 键单击鼠标按钮 1,会将插入光标定位在旋转框中,而不影响选择。
如果在 Spinbox 中键入任何普通打印字符,它们将被插入到插入光标所在的位置。
可以通过使用鼠标按钮 2 进行拖动来调整旋转框中的视图。如果单击鼠标按钮 2 而不移动鼠标,则所选内容将复制到旋转框中鼠标光标所在的位置。
如果在按下按钮 1 的同时将鼠标从左侧或右侧拖出旋转框,旋转框将自动滚动以使更多文本可见(如果鼠标离开窗口的一侧有更多文本离屏) 。
End 键或 Control-e 会将插入光标移动到旋转框的末尾,并清除旋转框中的所有选择。Shift-End 将光标移动到末尾并将选择范围扩展到该点。
Home 键或 Control-a 会将插入光标移动到旋转框的开头,并清除旋转框中的所有选择。Shift-Home 将插入光标移动到旋转框的开头,并将选择范围扩展到该点。
Control-/ 选择旋转框中的所有文本。
Control-\ 清除旋转框中的所有选择。
如果旋转框中有选择,则按删除键可删除该选择。如果没有选择,它将删除插入光标右侧的字符。
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
这将产生以下结果 -