listbox控件
列表框小部件用于显示用户可以从中选择多个项目的项目列表。
声明listbox控件对象
lb = Listbox ( master, option, ... )
option | 含义 |
---|
bg | 标签和指示器后面显示的正常背景颜色 |
bd | 指标周围边框的大小(默认值为2像素) |
cursor | 鼠标悬停在列表框上时显示的光标 |
font | 用于列表框中文本的字体 |
fg | 用于列表框中文本的颜色 |
height | 列表框中显示的行数(不是像素,默认值为10) |
highlightcolor | 当窗口小部件具有焦点时,焦点中显示的颜色突出显示 |
highlightthickness | 焦点的厚度突出显示 |
relief | 选择三维边框着色效果 (SUNKEN默认为) |
selectbackground | 要使用的背景颜色显示所选文本 |
selectmode | 确定可以选择的项目数以及鼠标拖动如何影响选择 |
width | 小部件的宽度(以字符为单位: 默认值为20) |
xscrollcommand | 如果要允许用户水平滚动列表框,可以将列表框小部件链接到水平滚动条。 |
yscrollcommand | 如果要允许用户垂直滚动列表框,可以将列表框小部件链接到垂直滚动条 |
selectmode
selectmode的值 | 含义 |
---|
BROWSE(默认值) | 从列表框中选择一行。 单击某个项目然后拖动到其他行,选择将跟随鼠标。 |
SINGLE | 选择一行,并且无法拖动鼠标。 |
MULTIPLE | 多选,单击切换是否选中 |
EXTENDED | 单击拖动来选择相邻的多行 |
listbox对象的方法
选项 | 说明 |
---|
activate ( index ) | 选择由给定索引指定的行 |
curselection() | 返回一个元组,其中包含所选元素的行号,从0开始计数。如果未选择任何元素,则返回空元组。 |
delete ( first, last=None ) | 删除索引在[first,last]范围内的行。 如果省略第二个参数,则删除具有索引优先级的单行。 |
get ( first, last=None ) | 返回一个元组,其中包含从第一个到最后一个包含索引的行的文本。 如果省略第二个参数,则返回最接近第一个的行的文本。 |
index ( i ) | 如果可能,请定位列表框的可见部分,以使包含索引i的行位于窗口小部件的顶部。 |
insert ( index, *elements ) | 在index指定的行之前,将一个或多个新行插入列表框。 如果要将新行添加到列表框的末尾,请使用END作为第一个参数。 |
nearest ( y ) | 返回相对于列表框小部件最接近y坐标y的可见行的索引 |
see ( index ) | 调整列表框的位置,以便索引引用的行可见 |
size() | 返回列表框中的行数 |
xview() | 要使列表框可水平滚动,请将关联水平滚动条的命令选项设置为此方法 |
xview_moveto ( fraction ) | 滚动列表框,使其最长行的最左边部分位于列表框的左侧之外。 分数在[0,1]范围内。 |
xview_scroll ( number, what ) | 水平滚动列表框。 对于what参数,使用UNITS按字符滚动,或使用PAGES按页面滚动,即按列表框的宽度滚动。 number参数告诉滚动的数量。 |
yview() | 要使列表框可以垂直滚动,请将关联的垂直滚动条的命令选项设置为此方法。 |
yview_moveto ( fraction ) | 滚动列表框,使其最长行的宽度的顶部位于列表框的左侧之外。 分数在[0,1]范围内。 |
yview_scroll ( number, what ) | 垂直滚动列表框。 对于what参数,使用UNITS按行滚动,或使用PAGES按页面滚动,即按列表框的高度滚动。 number参数告诉滚动的数量。 |
相关代码
import tkinter
window = tkinter.Tk()
window.title("RadioButton单选框控件")
window.geometry("400x400+400+200")
lb = tkinter.Listbox(window,selectmode=tkinter.BROWSE)
lb.pack()
for item in ["one","two","three","four"]:
lb.insert(tkinter.END,item)
lb.insert(tkinter.ACTIVE,"在开始添加1")
lb.insert(tkinter.ACTIVE,"在开始添加2")
lb.insert(tkinter.END,"在结尾添加1")
lb.insert(tkinter.END,"在结尾添加2")
lb.insert(tkinter.END,["数据1","数据2","数据3"])
lb.insert(tkinter.ACTIVE,"在开始添加3")
lb.select_set(2)
print(lb.curselection())
print(lb.select_includes(2))
print(lb.select_includes(3))
window.mainloop()
import tkinter
window = tkinter.Tk()
window.title("简单实例")
window.geometry("400x200+100+20")
lbStr = tkinter.StringVar()
lb = tkinter.Listbox(window,selectmode=tkinter.SINGLE,listvariable=lbStr)
lb.pack()
for item in ["one","two","three","four"]:
lb.insert(tkinter.END,item)
window.mainloop()
import tkinter
window = tkinter.Tk()
window.title("简单实例")
lb = tkinter.Listbox(window,selectmode=tkinter.EXTENDED)
for item in ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen"]:
lb.insert(tkinter.END,item)
sc = tkinter.Scrollbar(window)
sc.pack(side=tkinter.RIGHT,fill=tkinter.Y)
lb.configure(yscrollcommand=sc.set)
lb.pack(side=tkinter.LEFT,fill=tkinter.BOTH)
sc['command'] = lb.yview
window.mainloop()
import tkinter
window = tkinter.Tk()
window.title("简单实例")
window.geometry("400x200+100+20")
lb = tkinter.Listbox(window,selectmode=tkinter.MULTIPLE)
for item in ["one","two","three","four","five","six","seven","eight","nine","ten","eleven","twelve","thirteen","fourteen","fifteen","sixteen"]:
lb.insert(tkinter.END,item)
window.mainloop()