Python GUI编程实战--Tkinter组件详解:ListBox

Listbox控件
列表框控件;在Listbox窗口小部件是用来显示一个字符串列表给用户
Listbox 组件通常被用于显示一组文本选项,Listbox 组件跟 Checkbutton 和Radiobutton 组件类似,不过 Listbox 是以列表的形式来提供选项的(后两个是通过按钮的形式)。
语法
Listbox(master=None, **options) (class)
master – 父组件
**options – 组件选项,下方表格详细列举了各个选项的具体含义和用法:

常用组件选项讲解:
background<= =>bg: 设置背景颜色,默认值由系统指定。
borderwidth<= =>bd:指定 Listbox 的边框宽度, 默认值由系统指定,通常是 2 像素。

cursor: 指定当鼠标在 Listbox 上飘过的时候的鼠标样式,默认值由系统指定。

exportselection: 指定选中的项目文本是否可以被复制到剪贴板,默认值是 True, 可以修改为 False 表示不允许复制项目文本。

font:指定 Listbox 中文本的字体,默认值由系统指定

foreground<==>fg:设置 Listbox 的文本颜色,默认值由系统指定

height: 设置 Listbox 显示的行数(不是像素),默认值是 10

highlightbackground:指定当 Listbox 没有获得焦点的时候高亮边框的颜色, 默认值由系统指定,通常是标准背景颜色

highlightcolor:指定当 Listbox 获得焦点的时候高亮边框的颜色,默认值由系统指定

highlightthickness: 指定高亮边框的宽度,默认值是 1

listvariable:指向一个 StringVar 类型的变量,该变量存放 Listbox 中所有的项目,在 StringVar 类型的变量中,用空格分隔每个项目,例如 var.set(“鸡蛋 鸭蛋 鹅蛋 李狗蛋”)

relief:指定边框样式, 默认值是 SUNKEN

selectbackground: 指定当某个项目被选中的时候背景颜色, 默认值由系统指定

selectborderwidth:指定当某个项目被选中的时候边框的宽度,默认是由 selectbackground 指定的颜色填充,没有边框, 如果设置了此选项,Listbox 的每一项会相应变大,被选中项为 RAISED 样式

selectforeground:指定当某个项目被选中的时候文本颜色, 默认值由系统指定

selectmode: 决定选择的模式,四种不同的选择模式:SINGLE(单选)、BROWSE(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、MULTIPLE(多选)和 EXTENDED(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现), 默认是 BROWSE

setgrid:指定一个布尔类型的值,决定是否启用网格控制,默认值是 False

takefocus: 指定该组件是否接受输入焦点(用户可以通过 tab 键将焦点转移上来), 默认值是 True

width: 设置 Listbox 的宽度(单位是文本单元),文本单元是英文字母的平均宽度(所以如果该选项设置为 2,那么是无法容纳"ww"这两个宽度大于平均宽度的字母的), 默认值是 20

xscrollcommand: 为 Listbox 组件添加一条水平滚动条,将此选项与 Scrollbar 组件相关联即可

yscrollcommand:为 Listbox 组件添加一条垂直滚动条,将此选项与 Scrollbar 组件相关联即可

常用方法
activate(index):-- 将给定索引号对应的选项激活(在其文本下方画一条下划线)

bbox(index):
– 返回给定索引号对应的选项的边框
– 返回值是一个以像素为单位的 4 元祖表示边框:(xoffset,yoffset, width, height)
– xoffset 和 yoffset 表示距离左上角的偏移位置
– 返回的 width 是文本的实际宽度(像素为单位)
– 如果指向的选项是不可见的,那么返回值是 None

curselection():
– 返回一个元组,包含被选中的选项的序号(从 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) 方法,然后再将 事件及当前鼠标位置绑定到
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, UNITS) 表示向右滚动三行

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) 一样
实战内容
1.制作一个列表框,显示数据,并可以多选删除数据

from tkinter import *
'''
Listbox组件根据selectmode选项提供了四种不同的选择模式:SINGLE(单选)
BROWSE(也是单选,但推动鼠标或通过方向键可以直接改变选项)
MULTIPLE(多选)和EXTENDED(也是多选,但需要同时按住Shift和Ctrl或拖动鼠标实现
),默认是BROWSE
'''
root = Tk()
#height=11设置listbox组件的高度,默认是10行。
lb = Listbox(root, selectmode=MULTIPLE, height=6)
lb.pack()
for item in['公鸡','母鸡','小鸡','火鸡','战斗机',]:
    # END表示每插入一个都是在最后一个位置
    lb.insert(END,item)
bt = Button(root, text='删除', command=lambda x=lb:x.delete(ACTIVE))
bt.pack()
mainloop()

Python GUI编程实战--Tkinter组件详解:ListBox_第1张图片
2.为Listbox添加垂直滚动条

from tkinter import *
'''
为Listbox添加滚动条。 
滚动条是独立的组件。 
为了在某个足尖上安装垂直滚动条,你需要做两件事: 
1、设置该组件的yscrollbarcommand选项为Scrollbar组件的set()方法 
2、设置Scrollbar组件的command选项为该组件的yview()方法 
'''
root = Tk()
#垂直滚动条组件  
slb = Scrollbar(root)
#设置垂直滚动条显示的位置 
slb.pack(side=RIGHT,fill=Y)
#Listbox组件添加Scrollbar组件的set()方法
lb = Listbox(root,yscrollcommand=slb.set)
for i in range(1000):
    lb.insert(END,i)
lb.pack(side=LEFT,fill=BOTH)
#设置Scrollbar组件的command选项为该组件的yview()方法
slb.config(command=lb.yview)
mainloop()

Python GUI编程实战--Tkinter组件详解:ListBox_第2张图片
Python交流群:942913325 欢迎大家一起交流学习

你可能感兴趣的:(python学习,GUI编程,Tkinter,GUI)