在选项特别多的时候,Listbox是以列表的形式显示出来,并支持滚动条操作,所以在对于需要提供大量选项的情况下会更适用。
from tkinter import *
root = Tk()
theLB = Listbox(root,setgrid=True)
theLB.pack()
for item in ["1","2","3","4"]:
theLB.insert(END,item)
theButton=Button(root,text="删除",command=lambda x=theLB:x.delete(ACTIVE))
theButton.pack()
mainloop()
AVTIVE是一个特殊的索引号,表示当前被选中的项目。
Listbox组件根据selectmode选项提供了四种不同的选择模式:
1、SINGLE单选
2、BROWSE单选,但拖动鼠标或通过方向键可以直接改动选项
3、MAULTIPLE多选
4、EXTENDED多选,需要同时按住Shift或者Control键或拖动光标实现
但选项增多就需要一个滚动条来帮助
为了在某个组件上安装垂直滚动条,需要做两件事:
(1)设置该组件的yscrollbarcommand选项为Scrollbar组件的set()方法
(2)设置Scrollbar组件的command选项为该组件的yview()方法
from tkinter import *
root = Tk()
sb = Scrollbar(root)
sb.pack(side=RIGHT,fill=Y)
lb = Listbox(root,yscrollcommand=sb.set)
for i in range(1000):
lb.insert(END,str(i))
lb.pack(side=LEFT,fill=BOTH)
sb.config(command=lb.yview)
mainloop()
该组件主要是通过滑块来表示某个范围内的数字,可以通过修改选项设置范围以及分辨率(精度)
使用get()方法获取当前滑块的位置
from tkinter import *
root = Tk()
s1=Scale(root, from_=0, to=42)
s1.pack()
s2=Scale(root,from_=0,to=200,orient=HORIZONTAL)
s2.pack()
#orient = HORIZONTAL 表示横向
def show():
print(s1.get(),s2.get())
Button(root,text="获取数据",command=show).pack()
mainloop()
可以通过resolution选项控制分辨率(步长/精度),通过tickinterval选项设置刻度
from tkinter import *
root = Tk()
Scale(root,from_=0,to=40,tickinterval=5,length=200,resolution=5,orient=VERTICAL).pack()
Scale(root,from_=0,to=200,tickinterval=10,length=600,resolution=5,orient=HORIZONTAL).pack()
mainloop()