- Listbox控件-01
import tkinter
win = tkinter.Tk()
win.title("xinghaohan")
win.geometry("400x400+200+20")
'''
列表框控件,可以包含一个或者多个文本框
作用:在listbox控件的小窗口显示一个字符串
'''
#1、创建一个listbox,添加几个元素
lb = tkinter.Listbox(win, selectmode=tkinter.BROWSE)
lb.pack()
for item in ["good", "nice", "handsome", "vg", "vn"]:
#按顺序添加
lb.insert(tkinter.END, item)
#在开始添加
lb.insert(tkinter.ACTIVE, "cool")
#将列表当成一个元素添加
#lb.insert(tkinter.END, ["very good", "very nice"])
#删除 参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只删除第一个索引处的内容
#lb.delete(1, 3)
#lb.delete(1)
#选中 参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只选中第一个索引处的内容
lb.select_set(2,5)
#取消选中
#lb.select_clear(3)
#获取到列表中元素的个数
#print(lb.size())
#从列表中取值 参数1为开始的索引,参数2为结束的索引,如果不指定参数2,只获取第一个索引处的内容
#print(lb.get(2,4))
#print(lb.get(2))
#返回当前的索引项,不是item元素
print(lb.curselection())
#判断 一个选项是否被选中
print(lb.select_includes(1))
print(lb.select_includes(3))
win.mainloop()
- Listbox控件-02
import tkinter
win = tkinter.Tk()
win.title("xinghaohan")
win.geometry("400x400+200+20")
#绑定变量
lbv = tkinter.StringVar()
#与BROWSE相似,但不支持鼠标移动选中位置
lb = tkinter.Listbox(win, selectmode=tkinter.SINGLE, listvariable=lbv)
lb.pack()
for item in ["good", "nice", "handsome", "vg", "vn"]:
#按顺序添加
lb.insert(tkinter.END, item)
#打印当前列表中的选项
print(lbv.get())
#设置选项
#lbv.set(("1", "2", "3"))
#绑定事件 1-鼠标左键
def myPrint(event):
print(lb.get(lb.curselection()))
lb.bind('<Double-Button-1>', myPrint)
win.mainloop()
- Listbox控件-03
import tkinter
win = tkinter.Tk()
win.title("xinghaohan")
#win.geometry("400x400+200+20")
#EXTENDED 可以使listbox支持shift和control
lb = tkinter.Listbox(win, selectmode=tkinter.EXTENDED)
for item in ["good", "nice", "handsome", "vg", "vn",
"good1", "nice1", "handsome1", "vg1", "vn1"
"good2", "nice2", "handsome2", "vg2", "vn2"]:
lb.insert(tkinter.END, item)
#按住shift + 点击可以实现连选
#按住control可以实现多选
#滚动条
sc = tkinter.Scrollbar(win)
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
win.mainloop()
- Listbox控件-04
import tkinter
win = tkinter.Tk()
win.title("xinghaohan")
win.geometry("400x400+200+20")
#MULTIPLE 支持多选
lb = tkinter.Listbox(win, selectmode=tkinter.MULTIPLE)
lb.pack()
for item in ["good", "nice", "handsome", "vg", "vn"]:
lb.insert(tkinter.END, item)
win.mainloop()