Tkinter Listbox
列表框控件,可以包含一个或多个文本项,可以设置为单选或多选。
Listbox极简例子
from tkinter import *
root = Tk()
lb = Listbox(root)
for item in ['python', 'tkinter', 'widget']:
lb.insert(END, item)
lb.pack()
root.mainloop()
Listbox的多选模式
from tkinter import *
root = Tk()
lb = Listbox(root, selectmode=MULTIPLE)
for item in ['python', 'tkinter', 'widget']:
lb.insert(END, item)
lb.pack()
root.mainloop()
Listbox的鼠标移动选中模式(BROWSE & SINGLE)
BROWSE即为默认值,看看SINGLE
from tkinter import *
root = Tk()
lb = Listbox(root, selectmode=SINGLE)
for item in ['python', 'tkinter', 'widget']:
lb.insert(END, item)
lb.pack()
root.mainloop()
Listbox支持Control和Shift
from tkinter import *
root = Tk()
lb = Listbox(root, selectmode=EXTENDED)
for item in ['python', 'tkinter', 'widget']:
lb.insert(END, item)
lb.pack()
root.mainloop()
Listbox添加item
from tkinter import *
root = Tk()
lb = Listbox(root, selectmode=EXTENDED)
for item in ['python', 'tkinter', 'widget']:
lb.insert(END, item)
lb.insert(0, ['linux', 'C++'])
lb.insert(0, 'php', 'java')
lb.pack()
root.mainloop()
Listbox删除item
from tkinter import *
root = Tk()
lb = Listbox(root)
for i in range(10):
lb.insert(END, str(i))
lb.delete(1, 3)
lb.pack()
root.mainloop()
Listbox中item的选中与取消
from tkinter import *
root = Tk()
lb = Listbox(root)
for i in range(10):
lb.insert(END, str(i))
lb.selection_set(0, 10)
lb.selection_clear(0, 3)
lb.pack()
root.mainloop()
打印Listbox的item个数
from tkinter import *
root = Tk()
lb = Listbox(root)
for i in range(10):
lb.insert(END, str(i))
lb.delete(3)
print(lb.size())
lb.pack()
root.mainloop()
返回指定索引的item
from tkinter import *
root = Tk()
lb = Listbox(root)
for i in range(10):
lb.insert(END, str(i))
print(lb.get(3))
print(lb.get(3, 7))
lb.pack()
root.mainloop()
返回选中的item的索引
from tkinter import *
root = Tk()
lb = Listbox(root)
for i in range(10, 20):
lb.insert(END, str(i))
lb.selection_set(3, 8)
print(lb.curselection())
lb.pack()
root.mainloop()
判断item是否选中
from tkinter import *
root = Tk()
lb = Listbox(root)
for i in range(10, 20):
lb.insert(END, str(i))
lb.selection_set(3, 8)
print(lb.selection_includes(8))
print(lb.selection_includes(0))
lb.pack()
root.mainloop()
Listbox与变量绑定
from tkinter import *
root = Tk()
v = StringVar()
lb = Listbox(root, listvariable=v)
for i in range(10):
lb.insert(END, str(i*100))
print(v.get())
v.set(('1000', '200'))
lb.pack()
root.mainloop()
Listbox与事件绑定
from tkinter import *
root = Tk()
def printList(event):
print(lb.get(lb.curselection()))
lb = Listbox(root)
lb.bind('<Double-Button-1>', printList)
for i in range(10):
lb.insert(END, str(i*100))
lb.pack()
root.mainloop()
高度控制 height 单位是行数