Ruby/TK - 入门小部件


描述

条目用户提供一个单行文本字段,他们可以使用该字段输入值。这些信息可以是任何内容:姓名、城市、密码、社会安全号码等等。

句法

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

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

标准选项

  • 背景
  • 边框宽度
  • 光标
  • 出口选择
  • 字体
  • 前景
  • 突出显示背景
  • 突出显示颜色
  • 突出显示厚度
  • 证明合法
  • 宽慰
  • 选择背景
  • 选择边框宽度
  • 选择前景
  • 聚焦
  • 文本变量
  • xscroll命令

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

小部件特定选项

先生。 选项和说明
1

禁用背景 => 字符串

指定禁用条目时要使用的背景颜色。如果此选项为空字符串,则使用普通背景颜色。

2

禁用前景 => 字符串

指定禁用条目时要使用的前景色。如果此选项为空字符串,则使用正常的前景色。

3

只读背景 => 字符串

指定条目为只读时要使用的背景颜色。如果此选项为空字符串,则使用普通背景颜色。

4

显示 => 字符串

如果指定此选项,则条目的真实内容不会显示在窗口中。相反,条目值中的每个字符将显示为该选项值中的第一个字符,例如“*”。例如,如果该条目用于输入密码,则这很有用。如果选择条目中的字符并将其复制到其他地方,则复制的信息将是显示的内容,而不是条目的真实内容。

5

状态 => 字符串

指定条目的三种状态之一:正常禁用只读。如果条目是readonly,则即使输入焦点位于小部件中,也不能使用小部件命令更改该值,并且不会显示插入光标;小部件的内容仍然可以被选择。如果条目被禁用,则值可能不会更改,不会显示插入光标,内容将不可选,并且条目可能会以不同的颜色显示。

6

验证 =>字符串

指定验证操作的模式:nonefocusfocusinfocusoutkeyall。它默认为none。当您想要验证时,您必须明确说明您希望使用哪种模式。

7

验证命令 =>字符串

当您想要验证条目小部件的输入时,指定要评估的脚本。

8

宽度 => 整数

指定一个整数值,指示输入窗口的所需宽度(以小部件字体的平均大小字符表示)。如果该值小于或等于零,则小部件会选择一个足以容纳其当前文本的大小。

入境验证

我们可以通过将validatecommand选项设置为回调来验证输入的值,该回调将根据validate选项进行评估,如下所示 -

  • - 默认。这意味着不会发生任何验证。

  • focus - 当条目接收或失去焦点时将调用 validatecommand。

  • focusin - 当条目获得焦点时将调用 validatecommand。

  • focusout - 当条目失去焦点时将调用 validatecommand。

  • key - 编辑条目时将调用 validatecommand。

  • all - 对于上述所有条件将调用 validatecommand。

操作条目

以下有用的方法可用于操纵条目的内容 -

  • delete(first, ?last?) - 删除条目的一个或多个元素。First 是要删除的第一个字符的索引,last 是要删除的最后一个字符之后的字符的索引。如果没有指定last,则默认为first+1,即删除单个字符。该命令返回一个空字符串。

  • get - 返回条目的字符串。

  • icursor(index) - 安排插入光标显示在索引给定的字符之前。返回一个空字符串。

  • index(index) - 返回与索引相对应的数字索引。

  • insert(index, string) - 在索引指示的字符之前插入字符串的字符。返回一个空字符串。

  • xview(args) - 此命令用于查询和更改小部件窗口中文本的水平位置。

事件绑定

Ruby/Tk 自动为条目创建类绑定,赋予它们以下默认行为 -

  • 单击鼠标按钮 1 将插入光标定位在鼠标光标下方的字符之前,将输入焦点设置到该小部件,并清除小部件中的所有选择。使用鼠标按钮 1 拖动可在插入光标和鼠标下的字符之间划出一个选区。

  • 双击鼠标按钮 1 选择鼠标下的单词并将插入光标定位在单词的开头。双击后拖动将划出由整个单词组成的选区。

  • 用鼠标按钮 1 单击三次可选择条目中的所有文本并将插入光标定位在第一个字符之前。

  • 按住 Shift 键的同时用鼠标按钮 1 拖动可以调整选区的末端;当按下按钮 1 时,这将调整最接近鼠标光标的选择的末尾。如果在拖动之前双击该按钮,则将以整个单词为单位调整选择。

  • 按住 Control 键单击鼠标按钮 1 会将插入光标定位在条目中,而不影响选择。

  • 如果在条目中键入任何普通打印字符,它们将被插入到插入光标所在的位置。

  • 可以通过使用鼠标按钮 2 进行拖动来调整条目中的视图。如果在不移动鼠标的情况下单击鼠标按钮 2,则所选内容将复制到插入光标位置的条目中。

  • 如果在按下按钮 1 的同时将鼠标拖出左侧或右侧的条目,条目将自动滚动以使更多文本可见(如果鼠标离开窗口的一侧有更多文本离开屏幕) 。

  • 向左键和向右键将插入光标向左或向右移动一个字符;他们还清除条目中的所有选择并设置选择锚点。如果在按下 Shift 键的同时键入 Left 或 Right,则插入光标会移动,并且选择范围会扩展以包含新字符。Control-Left 和 Control-Right 按单词移动插入光标,Control-Shift-Left 和 Control-Shift-Right 按单词移动插入光标并扩展选择范围。Control-b 和 Control-f 的行为分别与 Left 和 Right 相同。Meta-b 和 Meta-f 的行为分别与 Control-Left 和 Control-Right 相同。

  • Home 键或 Control-a 会将插入光标移动到条目的开头并清除条目中的所有选择。Shift-Home 将插入光标移动到条目的开头,并将选择范围扩展到该点。

  • End 键或 Control-e 会将插入光标移动到条目末尾并清除条目中的所有选择。Shift-End 将光标移动到末尾并将选择范围扩展到该点。

  • Select 键和 Control-Space 将选择锚点设置为插入光标的位置。它们不会影响当前的选择。Shift-Select 和 Control-Shift-Space 将选择调整到插入光标的当前位置,如果之前没有任何选择,则从锚点选择到插入光标。

  • Control-/ 选择条目中的所有文本。

  • Control-\ 清除条目中的所有选择。

  • F16 键(在许多 Sun 工作站上标记为 Copy)或 Meta-w 将小部件中的选择复制到剪贴板(如果有选择)。

  • F20 键(在许多 Sun 工作站上标记为 Cut)或 Control-w 将小部件中的选择复制到剪贴板并删除选择。如果小部件中没有选择,则这些键不起作用。

  • F18 键(在许多 Sun 工作站上标记为“粘贴”)或 Control-y 将剪贴板的内容插入到插入光标的位置。

  • 如果条目中有一个选择,则“删除”键会删除该选择。如果没有选择,它将删除插入光标右侧的字符。

  • BackSpace 键和 Control-h 删除所选内容(如果条目中存在所选内容)。如果没有选择,它将删除插入光标左侧的字符。

  • Control-d 删除插入光标右侧的字符。

  • Meta-d 删除插入光标右侧的单词。

  • Control-k 删除插入光标右侧的所有字符。

  • Control-w 删除插入光标左侧的单词。

  • Control-t 反转插入光标右侧两个字符的顺序。

如果使用状态选项禁用条目,则仍然可以调整条目的视图并且仍然可以选择条目中的文本,但不会显示插入光标,并且不会发生任何文本修改。

例子

require 'tk'

root = TkRoot.new
root.title = "Window"

entry1 = TkEntry.new(root)
entry2 = TkEntry.new(root) do
   show '*'
end

variable1 = TkVariable.new
variable2 = TkVariable.new
entry1.textvariable = variable1
entry2.textvariable = variable2
variable1.value = "Enter any text value"
variable2.value = "Enter any confidential value"

entry1.place('height' => 25, 'width'  => 150, 'x'   => 10, 'y'   => 10)
entry2.place('height' => 25, 'width'  => 150, 'x'   => 10, 'y'   => 40)

Tk.mainloop

这将产生以下结果 -

Ruby/Tk 条目
ruby_tk_guide.htm