#还是原来的配方,原来的味道,创建个List列表先

from tkinter import *
#相较于之前的写法,太过于麻烦,但是为了理解,从现在开始我们用更简略的写法

window = Tk()		#这里跟之前也有区别哦

list = Listbox(window,width=20,height=10)	#还有这里
list.pack()

for item in ['1','2','3']:
    list.insert(0,item)		#我们用insert方法将元素添加到列表中去
    #注意这里的0指的是从哪个位置开始插入,后面一个就是要添加的内容,我们用for循环遍历添加进去
    #如果需要添加到末尾,将0改为“end”即可

list.insert(0,'1','2','3')	#我们也可以直接添加

window.mainloop()
#元素的删除
#我们上边讲了列表的创建和元素的添加,那么元素怎么样可以删除呢?

from tkinter import *

window = Tk()

list = Listbox(window,width=20,height=10,selectmode = MULTIPLE)
list.pack()

for item in ['1','2','3']:
    list.insert(0,item)

list.delete(1)		#我们使用delete()方法删除元素,1就是删除索引为1的元素(即第二个元素)
#如果我们需要删除‘1’,‘2’,‘3’三个元素的话,我们只需要改成list.delete(0,2)

window.mainloop()
#一次选择多个元素
#现在我们元素已经添加到列表中了,我们发现一次只能选择一个元素,我们可不可一次选择多个元素呢?
from tkinter import *

window = Tk()

list = Listbox(window,width=20,height=10,selectmode = MULTIPLE)	
#selectmode属性就是设置元素多选的,当设置成MULTIPLE时,列表可以多选一次只能多选一项
#当设置成EXPANDED时,列表就支持Shift和Ctrl键啦,具体功能自己体会
list.pack()

for item in ['1','2','3']:
    list.insert(0,item)

window.mainloop()
#一次性删除选中的选项
#现在我们已经知道怎么多选,怎么删除元素,那么我们怎么一次性将选中的选项都删除呢?

from tkinter import *

window = Tk()

list = Listbox(window,width=20,height=10,selectmode = EXTENDED)
list.pack()

list.insert(0,'1','2','3','4','5')

def deletelist():
    a = list.size()			#我们用size()方法可以知道当前列表中有多少元素啦
    for i in range(a):
        if(list.select_includes(a-1-i)) == True:		#用select_includes()可以知道该选项是否被选中
            list.delete(a-1-i)		
            #我们为什么要倒着检查呢?因为如果顺着检查,当删除后索引就会发生变化,就会出现问题啦

Button(window,text='单击',command=deletelist).pack()

window.mainloop()
#获取列表中元素的值

from tkinter import *

window = Tk()

list = Listbox(window,width=20,height=10,selectmode = EXTENDED)
list.pack()

list.insert(0,'1','2','3','4','5')

print(list.get(1))		#用get()方法可以很方便的获取元素的值

window.mainloop()
#获取Listbox中所有的值
#我们在上面知道了如何获取指定索引的元素的值,那么我们如何一次性将列表中的元素都获取出来呢?
from tkinter import *

window = Tk()

value = StringVar()		#还记得这个嘛,我们可以将元素值保存在容器中
list = Listbox(window,width=20,height=10,selectmode = EXTENDED,listvariable=value)
#同样的,用listvariable属性将列表和容器联系起来
list.pack()

list.insert(0,'1','2','3','4','5')

print(value.get())		#接着我们只需要获取容器里面的值就好了

window.mainloop()
#列表的事件处理
#之前我们有提到过回调函数,比如按键的回调函数,当按下按键时执行回调函数里面的代码
#但是列表没有回调函数这么一说,他有的是事件,当我双击列表了,就触发了列表的双击事件,就要对此作出处理
#我们现在来试试,如何双击列表的某个元素时,将其删除

from tkinter import *

window = Tk()

list = Listbox(window,width=20,height=10,selectmode = EXTENDED)
list.pack()
def delete_index(event):
    list.delete(list.curselection())
list.bind('<Double-Button-1>',delete_index)
#bind()就是我们定义事件处理的方法,'<Double-Button-1>'指的是双击事件,当事件触发时就调用delete_index
#事件的详细讲解会做专题讲解
list.insert(0,'1','2','3','4','5')

window.mainloop()