- 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和yscrollcommand选项在两个方向上滚动。
句法
这是创建此小部件的简单语法 -
TkListbox.new(root) { .....Standard Options.... .....Widget-specific Options.... }
标准选项
- 背景
- 边框宽度
- 光标
- 禁用前景
- 出口选择
- 字体
- 前景
- 高度
- 突出显示背景
- 突出显示颜色
- 突出显示厚度
- 抵消
- 宽慰
- 选择背景
- 选择边框宽度
- 选择前景
- 设置网格
- 聚焦
- 瓦
- 宽度
- xscroll命令
- yscroll命令
这些选项已在前一章中进行了描述。
小部件特定选项
先生。 | 选项和说明 |
---|---|
1 | activestyle => 字符串 指定绘制活动元素的样式。这必须是dotbox、none或underline之一。默认为下划线。 |
2 | 高度 => 整数 指定窗口所需的高度(以行为单位)。如果为零或小于零,则窗口的所需高度将足够大以容纳列表框中的所有元素。 |
3 | 列表变量 => 变量 指定变量的引用。变量的值是一个要在小部件内显示的数组;如果变量值发生变化,则小部件将自动更新自身以反映新值。 |
4 | 选择模式 =>字符串 指定用于操作选择的多种样式之一。该选项的值可以是任意的,但默认绑定期望它是single、browser、multiple或 Extended;默认值是浏览。 |
5 | 状态 => 字符串 指定列表框的两种状态之一:正常或禁用。如果列表框被禁用,则可能无法插入或删除项目。 |
6 | 宽度 => 整数 以字符为单位指定窗口所需的宽度。如果字体没有统一的宽度,则在从字符单位转换为屏幕单位时使用字符“0”的宽度。如果为零或小于零,则窗口所需的宽度将足够大以容纳列表框中的所有元素。 |
操作列表框项目
有多种方法可以使用列表框 -
listvariable - 变量允许您将变量(必须包含列表)链接到列表框。该列表的每个元素都是一个字符串,代表列表框中的一项。因此,要添加、删除或重新排列列表框中的项目,您只需像操作任何其他列表一样操作此变量即可。
插入idx 项目?项目...?方法用于将一项或多项添加到列表中;“idx”是一个从 0 开始的索引,指示应在其之前添加项目的位置;指定“end”将新项目放在列表末尾。
删除第一个?最后一个?方法用于从列表中删除一项或多项;“first”和“last”是按照“insert”方法的索引。
第一个还是最后一个?方法返回给定位置处单个项目的内容,或“第一个”和“最后一个”之间的项目列表。
size方法返回列表中的项目数。
curselection方法用于找出用户当前选择了列表框中的哪个或哪些项目。这将返回当前选定的所有项目的索引列表;这可能是一个空列表。
选择清楚首先?最后?方法用于取消选择单个项目或指定索引范围内的任何项目。
选择集首先?最后?方法用于选择一个项目或范围内的所有项目。
xview (args)方法用于查询和更改窗口小部件窗口中信息的水平位置。
yview (?args?)方法用于查询和更改小部件窗口中文本的垂直位置。
指数
列表框的许多方法都采用一个或多个索引作为参数。索引通过以下任一方式指定列表框的特定元素 -
number - 一个十进制数,给出文本项中所需字符的位置。0 表示第一个字符,1 表示下一个字符,依此类推。
active - 指示具有位置光标的元素。当列表框具有键盘焦点时,该元素将显示带有下划线,并且使用 activate 方法指定。
锚点- 指示选择的锚点,通过选择锚点方法设置。
end - 表示列表框的结尾。对于某些命令,这意味着紧接在最后一个元素之后;对于其他命令,它意味着最后一个元素。
事件绑定
Ruby/Tk 为列表框创建类绑定,赋予它们类似 Motif 的行为。列表框的大部分行为是由其selectmode选项决定的,该选项选择处理选择的四种方式之一。
如果选择方式为“单一”或“浏览”,则列表框中一次最多只能选择一个元素。在这两种模式下,单击元素上的按钮 1 会选择该元素并取消选择任何其他选定的项目。在浏览模式下,还可以使用按钮 1 拖动选择。
如果选择模式是multiple或Extended,则可以一次选择任意数量的元素,包括不连续的范围。在多重模式下,单击元素上的按钮 1 会切换其选择状态,而不会影响任何其他元素。在扩展模式下,按某个元素上的按钮 1 将选择该元素,取消选择其他所有内容,并将锚点设置为鼠标下方的元素;使用按钮 1 向下拖动鼠标可扩展选择范围,以包括锚点和鼠标下的元素之间的所有元素(包括在内)。
大多数人可能希望使用浏览模式进行单项选择,使用扩展模式进行多项选择;其他模式似乎仅在特殊情况下有用。
除了上述行为之外,还有许多其他与列表框相关的附加行为,本教程未涵盖 -
实施例1
require "tk" root = TkRoot.new root.title = "Window" list = TkListbox.new(root) do width 20 height 10 setgrid 1 selectmode 'multiple' pack('fill' => 'x') end list.insert 0, "yellow", "gray", "green", "blue", "red", "black", "white", "cyan", "pink", "yellow", "orange", "gray" Tk.mainloop
这将产生以下结果 -
实施例2
以下是使用listvariable选项填充列表项的示例-
require "tk" $names = %w{ yellow gray green blue red black white cyan pink yellow orange gray} $colornames = TkVariable.new($names) root = TkRoot.new root.title = "Window" list = TkListbox.new(root) do width 20 height 10 setgrid 1 listvariable $colornames pack('fill' => 'x') end Tk.mainloop
这将产生以下结果 -
实施例3
以下示例解释了如何将TkScrollbar小部件与列表框一起使用。
require "tk" $names = %w{ yellow gray green blue red black white cyan pink yellow orange gray} $colornames = TkVariable.new($names) root = TkRoot.new root.title = "Window" list = TkListbox.new(root) do listvariable $colornames pack('fill' => 'x') end list.place('height' => 150, 'width' => 100, 'x' => 10, 'y' => 10) scroll = TkScrollbar.new(root) do orient 'vertical' place('height' => 150, 'x' => 110) end list.yscrollcommand(proc { |*args| scroll.set(*args) }) scroll.command(proc { |*args| list.yview(*args) }) Tk.mainloop
这将产生以下结果 -