Listbox组件
如果需要提供选项给用户选择,单选可以用Radiobutton组件,多选可以用Checkbutton,如果提供的选项非常多,可以考虑使用Listbox组件。Listbox是以列表的形式显示出来,并支持滚动条操作。
实例1:
1 from tkinter import *
2
3 root = Tk()#创建主窗口
4
5 theLB = Listbox(root,setgrid = True,selectmode=EXTENDED)#创建一个空列表
6 theLB.pack()
7
8 #往列表里添加数据
9 for item in ["鸡蛋","鸭蛋","鹅蛋","李狗蛋"]:
10 theLB.insert(END,item)#每次在列表最后插入一个数据
11
12 #创建一个按钮,ACTIVE表示当前选中的数据
13 theButton = Button(root,text="删除",command = lambda x = theLB:x.delete(ACTIVE))
14 theButton.pack()
15
16 #theLB.delete(0,END)删除所有列表数据
17
18 mainloop()
注:listbox.delete(0,END)可以删除列表中所有项目
实例2:添加height选项
1 from tkinter import *
2
3 root = Tk()#创建主窗口
4
5 #height=11表示可以显示11个项目
6 theLB = Listbox(root,setgrid = True,\
7 selectmode=BROWSE,height=11)#创建一个空列表,选择模式为单选
8 theLB.pack()
9
10 #往列表里添加数据
11 for item in range(11):
12 theLB.insert(END,item)#每次在列表最后插入一个数据
13
14 #创建一个按钮,ACTIVE表示当前选中的数据
15 theButton = Button(root,text="删除",command = lambda x = theLB:x.delete(ACTIVE))
16 theButton.pack()
17
18 #theLB.delete(0,END)删除所有列表数据
19
20 mainloop()
Scrollbar组件
实例1:
1 from tkinter import *
2
3 root = Tk()#创建主窗口
4
5 sb = Scrollbar(root)
6 sb.pack(side=RIGHT,fill=Y)
7
8 lb = Listbox(root,yscrollcommand=sb.set)#创建一个空列表
9 for i in range(1000):
10 lb.insert(END,i)
11 lb.pack(side=LEFT,fill=BOTH)
12
13 sb.config(command = lb.yview)
14
15 mainloop()
事实上,这是一个互联互通的过程。当用户操作滚动条时,滚动条响应滚动并同时通过Listbox组件的yview()方法滚动列表框里的内容;同样,当列表框中可视范围发生改变的时候,Listbox组件通过调用Scrollbar组件的set()方法设置滚动条的最新位置。
Scale组件
Scale组件主要是通过滑块来表示某个范围内的一个数字,可以通过修改选项设置范围以及分辨率(精度)
实例1:
1 from tkinter import *
2
3 root = Tk()#创建主窗口
4 Scale(root,from_=0,to=42).pack()#创建铅锤方向滚动条
5 Scale(root,from_=0,to=200,orient=HORIZONTAL).pack()#创建水平方向滚动条
6
7 mainloop()
实例2:打印当前位置
1 from tkinter import *
2
3 def show():
4 print(s1.get(),s2.get())#使用get()方法获取当前滑块的位置
5
6 root = Tk()#创建主窗口
7 s1 = Scale(root,from_=0,to=42)#创建铅锤方向滚动条
8 s1.pack()
9 s2 = Scale(root,from_=0,to=200,orient=HORIZONTAL)#创建水平方向滚动条
10 s2.pack()
11
12 #创建一个按钮
13 Button(root,text="获取位置",command=show).pack()
14
15 mainloop()
实例3:通过resolution选项控制分辨率(步长),通过tickinterval选项设置刻度
1 from tkinter import *
2
3 def show():
4 print(s1.get(),s2.get())#使用get()方法获取当前滑块的位置
5
6 root = Tk()#创建主窗口
7 #tickinterval表示设置刻度,即每隔多少显示一个刻度
8 #length表示滚动条的长度所占的像素数
9 #resolution用来控制分辨率(步长)
10 s1 = Scale(root,from_=0,to=42,tickinterval=5,length=200,\
11 resolution=5,orient=VERTICAL)#创建铅锤方向滚动条
12 s1.pack()
13 s2 = Scale(root,from_=0,to=200,tickinterval=10,\
14 length=600,orient=HORIZONTAL)#创建水平方向滚动条
15 s2.pack()
16
17 #创建一个按钮
18 Button(root,text="获取位置",command=show).pack()
19
20 mainloop()