目录
- 何时使用 Listbox 组件?
- 用法
- 参数
- 方法
Listbox(列表框)组件用于显示一个选择列表。Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色。根据组件的配置,用户可以从列表中选择一个或多个选项。
何时使用 Listbox 组件?
Listbox 组件通常被用于显示一组文本选项,Listbox 组件跟 Checkbutton 和 Radiobutton 组件类似,不过 Listbox 是以列表的形式来提供选项的(后两个是通过按钮的形式)。
用法
当你创建一个 Listbox 组件的时候,它是空的,所以第一件要做的事就是添加一行或多行文本进去。我们使用 insert() 方法添加文本,该方法有两个参数:第一个参数是插入的索引号,第二个参数是插入的字符串。索引号通常是项目的序号(0 是列表中第一项的序号)。
不过你也可以使用一些特殊的索引号:比如 ACTIVE 表示选中的项目(如果 Listbox 允许多选,那么它表示最后一个被选中的项目);又如 END 表示 Listbox 的最后一行,所以当要插入一个项目到列表时可以使用 END:
import tkinter as tk master = tk.Tk() # 创建一个空列表 theLB = tk.Listbox(master) theLB.pack() # 往列表里添加数据 for item in ["鸡蛋", "鸭蛋", "鹅蛋", "李狗蛋"]: theLB.insert("end", item) master.mainloop()
使用 delete() 方法删除列表中的项目,最常用的操作是删除列表中的所有项目(更新列表时你需要做的事儿):
listbox.delete(0, "end") listbox.insert("end", newitem) #插入新的项目
当然你也可以删除指定的项目,下边例子使用一个独立按钮来删除 ACTIVE 状态的项目:
import tkinter as tk master = tk.Tk() # 创建一个空列表 theLB = tk.Listbox(master) theLB.pack() # 往列表里添加数据 for item in ["鸡蛋", "鸭蛋", "鹅蛋", "李狗蛋"]: theLB.insert("end", item) theButton = tk.Button(master, text="删除", command=lambda x=theLB: x.delete("active")) theButton.pack() master.mainloop()
Listbox 组件根据 selectmode 选项提供了四种不同的选择模式:"single"(单选)、"browse"(也是单选,但拖动鼠标或通编程客栈过方向键可以直接改变选项)、"multiple"(多选)和 "extended"(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现)。默认是 "browse"。
参数
Listbox(master=None, **options) (class)
master -- 父组件
**options -- 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
background | 1. 设置背景颜色2. 默认值由系统指定 |
bg | 跟 background 一样 |
borderwidth | 1. 指定 Listbox 的边框宽度2. 默认值由系统指定,通常是 2 像素 |
bd | 跟 borderwidth 一样 |
cursor | 1. 指定当鼠标在 Listbox 上飘过的时候的鼠标样式2. 默认值由系统指定 |
exportselection | 1. 指定选中的项目文本是否可以被复制到剪贴板2. 默认值是 True3. 可以修改为 False 表示不允许复制项目文本 |
font | 1. 指定 Listbox 编程客栈中文本的字体2. 默认值由系统指定 |
foreground | 1. 设置 Listbox 的文本颜色2. 默认值由系统指定 |
fg | 跟 foreground 一样 |
height | 1. 设置 Listbox 显示的行数(不是像素)2. 默认值是 10 |
highlightbackground | 1. 指定当 Listbox 没有获得焦点的时候高亮边框的颜色2. 默认值由系统指定,通常是标准背景颜色 |
highlightcolor | 1. 指定当 Listbox 获得焦点的时候高亮边框的颜色2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度2. 默认值是 1 |
listvariable | 1. 指向一个 StringVar 类型的变量,该变量存放 Listbox 中所有的项目2. 在 StringVar 类型的变量中,用空格分隔每个项目,例如 var.set("鸡蛋 鸭蛋 鹅蛋 李狗蛋") |
relief | 1. 指定边框样式2. 默认值是 "sunken" |
selectbackground | 1. 指定当某个项目被选中的时候背景颜色2. 默认值由系统指定 |
selectborderwidth | 1. 指定当某个项目被选中的时候边框的宽度2. 默认是由 selectbackground 指定的颜色填充,没有边框3. 如果设置了此选项,Listbox 的每一项会相应变大,被选中项为 "raised" 样式 |
selectforeground | 1. 指定当某个项目被选中的时候文本颜色2. 默认值由系统指定 |
selectmode | 1. 决定选择的模式2. 四种不同的选择模式:"single"(单选)、"browse"(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、"multiple"(多选)和 "extended"(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现)3. 默认是 "browse" |
setgrid | 1. 指定一个布尔类型的值,决定是否启用网格控制2. 默认值是 False |
takefocus | 1. 指定该组件是否接受输入焦点(用户可以通过 tab 键编程客栈将焦点转移上来)2. 默认值是 True |
width | 1. 设置 Listbox 的宽度(单位是文本单元)2. 文本单元是英文字母的平均宽度(所以如果该选项设置为 2,那么是无法容纳"ww"这两个宽度大于平均宽度的字母的)3. 默认值是 20 |
xscrollcommand | 1. 为 Listbox 组件添加一条水平滚动条2. 将此选项与 Scrollbar 组件相关联即可 |
yscrollcommand | 1. 为 Listbox 组件添加一条垂直滚动条2. 将此选项与 Scrollbar 组件相关联即可 |
方法
activate(index)
-- 将给定索引号对应的选项激活(在其文本下方画一条下划线)bbox(index)
-- 返回给定索引号对应的选项的边框-- 返回值是一个以像素为单位的 4 元祖表示边框:(xoffset, yoffset, width, height)-- xoffset 和 yoffset 表示距离左上角的偏移位置-- 返回的 width 是文本的实际宽度(像素为单位)-- 如果指向的选项是不可见的,那么返回值是 Nonecurselection()
-- 返回一个元组,包含被选中的选项的序号(从 0 开始)-- 如果没有选中任何选项,返回一个空元组delete(first, last=None)
-- 删除参数 first 到 last 范围内(包含 first 和 last)的所有选项-- 如果忽略 last 参数,表示删除 first 参数指定的选项get(first, last=None)
-- 返回一个元组,包含参数 first 到 last 范围内(包含 first 和 last)的所有选项的文本-- 如果忽略 last 参数,表示返回 first 参数指定的选项的文本index(index)
-- 返回与 index 参数相应的选项的序号(例如 lb.index("end"))insert(index, *elements)
-- 添加一个或多个项目到 Listbox 中-- 使用 lb.insert("end") 添加新选项到末尾itemcget(index, option)
-- 获得 index 参数指定的项目对应的选项(由 option 参数指定)itemconfig(index, **options)
-- 设置 index 参数指定的项目对应的选项(由可变参数 **option 指定)nearest(y)
-- 返回与给定参数 y 在垂直坐标上最接近的项目的序号scan_dragto(x, y)
-- 见下方 scan_mark(x, y)scan_mark(x, y)
-- 使用这种方式来实现 Listbox 内容的滚动-- 需要将鼠标按钮事件及当前鼠标位置绑定到 scan_mark(x, y) 方法,然后再将 <motion> 事件及当前鼠标位置绑定到 scan_dragto(x, y) 方法,就可以实现 Listbox 在当前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之间滚动see(index)
-- 调整列表框的位置,使得 index 参数指定的选项是可见的select_anchor(index)
-- 与 selection_anchor(index) 相同,见下方解释select_clear(first, last=None)
-- 与 selection_clear(first, last=None) 相同,见下方解释select_includes(index)
-- 与 selection_includes(index) 相同,见下方解释select_set(first, last=None)
-- 与 selection_set(first, last=None) 相同,见下方解释selection_anchor(index)
-- 在 index 参数的位置下一个锚点,此后你就可以通过特殊索引 "anchor" 访问selection_clear(first, last=None)
-- 取消参数 first 到 last 范围内(包含 first 和 last)选项的选中状态-- 如果忽略 last 参数,则只取消 first 参数指定选项的选中状态selection_includes(index)
-- 返回 index 参数指定的选项的选中状态-- 返回 1 表示选中,返回 0 表示未选中selection_set(first, last=None)
-- 设置参数 first 到 last 范围内(包含 first 和 last)选项为选中状态-- 如果忽略 last 参数,则只设置 first 参数指定选项为选中状态size()
-- 返回 Listbox 组件中选项的数量xview(*args)
-- 该方法用于在水平方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)-- 如果第一个参数是 "moveto",则第二个参数表示滚动到指定的位置:0.0 表示最左端,1.0 表示最右端--如果第一个参数是 "scroll",则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 "units" 或 "pages"),例如:xview("scroll", 3, "pages")表示向右滚动三行xview_moveto(fraction)
-- 跟 xview("moveto", fraction) 一样xview_scroll(number, what)
-- 跟 xview("scroll", number, what) 一样yview(*args)
-- 该方法用于在垂直方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar编程客栈 组件的 command 选项来实现(具体操作参考:Scrollbar)-- 如果第一个参数是 "moveto",则第二个参数表示滚动到指定的位置:0.0 表示最顶端,1.0 表示最底端-- 如果第一个参数是 "scroll",则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 "units" 或 "pages"),例如:yview("scroll", 3, "pages") 表示向下滚动三页yview_moveto(fraction)
-- 跟 yview("moveto", fraction) 一样yview_scroll(number, what)
-- 跟 yview("scroll", number, what) 一样到此这篇关于python中Tkinter组件Listbox的具体使用的文章就介绍到这了,更多相关Python Tkinter Listbox内容请搜索我们以前的文章或继续浏览下面的相关文章希www.cppcns.com望大家以后多多支持我们!
精彩评论