#还是原来的配方,原来的味道,创建个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()