tkinter中有一个selection_includes()方法,可以检查指定项是否被选取。
比如,
listbox.select_includes(0),是用来判断listbox中的首项是否被选取,如果选取了则返回一个True,否则返回False
listbox.select_includes(1)则是判断第2项有没有被选取。
看下面这段代码:
from tkinter import * root=Tk() root.title('Entry') root.geometry('300x200') var1=StringVar() var2=StringVar() var2.set((11,'bb','cc')) def print_selection(): print(lbox.select_includes(0)) print(lbox.select_includes(2)) b1=Button(root,command=print_selection,text='print selection').pack() lbox=Listbox(root,listvariable=var2) lbox.pack() mainloop()
当我选中首项,点击下面的按钮后,运行效果如下:
那么要判定有没有选取,任意项被选取就返回True,没有项被选则返回False应该怎么做呢?
这时候要用到listbox.curselection()方法了。
listbox.curselection()方法,返回的是一个元组,元组中会包含当前项的索引值,如果没有选取任何项,则返回一个空元组
如下代码:
from tkinter import * root=Tk() root.title('Entry') root.geometry('300x200') var1=StringVar() var2=StringVar() var2.set((11,'bb','cc')) def print_selection(): print(lbox.curselection())b1=Button(root,command=print_selection,text='print selection').pack()
lbox=Listbox(root,listvariable=var2)
lbox.pack()
mainloop()
运行效果
如果不选则返回一个空的元组
如果选中一个,则返回所选项的索引值,一个元组
如下
这样一来,要判定listbox中是否有被选中项,只要判定curselection()方法返回的值是否为空就好了。
如果有选中某个项,则可以使用get()方法来获取
如下代码:
from tkinter import * root=Tk() root.title('Entry') root.geometry('300x200') var1=StringVar() var2=StringVar() var2.set((11,'bb','cc')) def print_selection(): if not lbox.curselection(): print('没选中') else: print(f'你选中了{lbox.get(lbox.curselection())}') b1=Button(root,command=print_selection,text='print selection').pack() lbox=Listbox(root,listvariable=var2) lbox.pack() mainloop()
代码运行效果如下:
如果没选中,则会输出没选中,如果选中了,则输出下面为样的内容:
你学会了吗?
标签: