当前分类:python>>正文

tkinter检查listbox有没有项被选取

来源:互联网   时间:2022年12月1日   编辑

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()

代码运行效果如下:

如果没选中,则会输出没选中,如果选中了,则输出下面为样的内容: 

你学会了吗?

 

[猜你喜欢]

标签: Tkinter