大家好,欢迎来到IT知识分享网。
Listbox
列表框
Listbox(列表框)组件用于显示一个选择列表。Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色。根据组件的配置,用户可以从列表中选择一个或多个选项。
通常被用于显示一组文本选项,,Listbox 组件跟 Checkbutton
和 Radiobutton
组件类似,不过 Listbox 是以列表的形式来提供选项的。
执行自定义函数时,通常使用实例名.curselection()
”或 selected
”来获取选中项的位置索引。由于列表框实质上就是将Python 的列表类型数据可视化呈现,在程序实现时,也可直接对相关列表数据进行操作,然后再通过列表框展示出来,而不必拘泥于可视化控件的方法。
用法和参数
Listbox(master=None, options)
master
– 父组件options
– 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
---|---|
background /bg |
1. 设置背景颜色 2. 默认值由系统指定 |
borderwidth /bd |
1. 指定 Listbox 的边框宽度 2. 默认值由系统指定,通常是 2 像素 |
cursor |
1. 指定当鼠标在 Listbox 上飘过的时候的鼠标样式 2. 默认值由系统指定 |
exportselection |
1. 指定选中的项目文本是否可以被复制到剪贴板 2. 默认值是 True 3. 可以修改为 False 表示不允许复制项目文本 |
font |
1. 指定 Listbox 中文本的字体 2. 默认值由系统指定 |
foreground /fg |
1. 设置 Listbox 的文本颜色 2. 默认值由系统指定 |
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 组件相关联即可 |
justify |
文本对齐方式,可以设置"center" , "left" , "center" , "right" |
方法
方法 | 功能描述 |
---|---|
curselection() |
– 返回一个元组,包含被选中的选项的序号(从 0 开始) – 如果没有选中任何选项,返回一个空元组 |
delete(first, last=None) |
删除参数 first 到 last 范围内(包含 first 和 last)的所有选项 如果忽略 last 参数,表示删除 first 参数指定的选项 |
insert(index, *elements) |
– 添加一个或多个项目到 Listbox 中 – 使用 lb.insert(“end”) 添加新选项到末尾 |
get(first, last=None) |
– 返回一个元组,包含参数 first 到 last 范围内(包含 first 和 last)的所有选项的文本 – 如果忽略 last 参数,表示返回 first 参数指定的选项的文本 |
size() |
返回列表框行数 |
activate(index) |
将给定索引号对应的选项激活(在其文本下方画一条下划线) |
bbox(index) |
– 返回给定索引号对应的选项的边框 – 返回值是一个以像素为单位的 4 元祖表示边框:(xoffset, yoffset, width, height) – xoffset 和 yoffset 表示距离左上角的偏移位置 – 返回的 width 是文本的实际宽度(像素为单位) – 如果指向的选项是不可见的,那么返回值是 None |
index(index) |
返回与 index 参数相应的选项的序号(例如 lb.index(“end”)) |
itemcget(index, option) |
– 获得 index 参数指定的项目对应的选项(由 option 参数指定) |
itemconfig(index, options) |
– 设置 index 参数指定的项目对应的选项(由可变参数 option 指定) |
nearest(y) |
– 返回与给定参数 y 在垂直坐标上最接近的项目的序号 |
scan_mark(x, y) |
– 使用这种方式来实现 Listbox 内容的滚动 – 需要将鼠标按钮事件及当前鼠标位置绑定到 scan_mark(x, y) 方法,然后再将 事件及当前鼠标位置绑定到 scan_dragto(x, y) 方法,就可以实现 Listbox 在当前位置和 sacn_mack(x, y) 指定的位置 (x, y) 之间滚动 |
see(index) |
– 调整列表框的位置,使得 index 参数指定的选项是可见的 |
selection_anchor(index) |
– 在 index 参数的位置下一个锚点,此后你就可以通过特殊索引 “anchor” 访问 |
selection_includes(index) |
– 返回 index 参数指定的选项的选中状态 – 返回 1 表示选中,返回 0 表示未选中 |
selection_clear(first, last=None) |
– 取消参数 first 到 last 范围内(包含 first 和 last)选项的选中状态 – 如果忽略 last 参数,则只取消 first 参数指定选项的选中状态 |
selection_set(first, last=None) |
– 设置参数 first 到 last 范围内(包含 first 和 last)选项为选中状态 – 如果忽略 last 参数,则只设置 first 参数指定选项为选中状态 |
参考示例
from tkinter import * def ini(): Lstbox1.delete(0,END) list_items = ["数学","物理","化学","语文","外语"] for item in list_items: Lstbox1.insert(END,item) def clear(): Lstbox1.delete(0,END) def ins(): if entry.get() != '': if Lstbox1.curselection() == (): Lstbox1.insert(Lstbox1.size(),entry.get()) else: Lstbox1.insert(Lstbox1.curselection(),entry.get()) def updt(): if entry.get() != '' and Lstbox1.curselection() != (): selected=Lstbox1.curselection()[0] Lstbox1.delete(selected) Lstbox1.insert(selected,entry.get()) def delt(): if Lstbox1.curselection() != (): Lstbox1.delete(Lstbox1.curselection()) root = Tk() root.title('列表框实验') root.geometry('320x240') frame1 = Frame(root,relief=RAISED) frame1.place(relx=0.0) frame2 = Frame(root,relief=GROOVE) frame2.place(relx=0.5) Lstbox1 = Listbox(frame1) Lstbox1.pack() entry = Entry(frame2) entry.pack() btn1 = Button(frame2,text='初始化',command=ini) btn1.pack(fill=X) btn2 = Button(frame2,text='添加',command=ins) btn2.pack(fill=X) btn3 = Button(frame2,text='插入',command=ins) # 添加和插入功能实质上是一样的 btn3.pack(fill=X) btn4 = Button(frame2,text='修改',command=updt) btn4.pack(fill=X) btn5 = Button(frame2,text='删除',command=delt) btn5.pack(fill=X) btn6 = Button(frame2,text='清空',command=clear) btn6.pack(fill=X) root.mainloop()
免责声明:本站所有文章内容,图片,视频等均是来源于用户投稿和互联网及文摘转载整编而成,不代表本站观点,不承担相关法律责任。其著作权各归其原作者或其出版社所有。如发现本站有涉嫌抄袭侵权/违法违规的内容,侵犯到您的权益,请在线联系站长,一经查实,本站将立刻删除。 本文来自网络,若有侵权,请联系删除,如若转载,请注明出处:https://haidsoft.com/129920.html