目录
Listbox
用列表框的形式显示出选项,并且支持滚动条操作。所以更适用于提供大量选项
1. selectmode 属性提供了四种不同的选择模式
SINGLE(单选)、BROWSE(也是单选,但是拖动鼠标或通过方向键可以直接改变选项)、MUTIPLE(多选)和 EXTENDED(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现)。默认是 BROWSE
2.数据量超过Listbox最大显示范围
①修改 height 属性
②可以为 Listbox 组件添加滚动条
Scrollbar 滚动条组件
滚动条组件作为独立的组件,与其他组件一起配合使用。
在某个组件上安装垂直滚动条:
1. 设置该组件的 yscrollcommand 选项为 Scrollbar 组件的 set() 方法
2. 设置 Scrollbar 组件的 command 选项为该组件的 yview() 方法
def pyListbox():
master = tkinter.Tk()
#1.创建Scrollbar组件(放到右边,填充整个y轴)
sb=tkinter.Scrollbar(master)
sb.pack(side=tkinter.RIGHT,fill=tkinter.Y)
#2.创建listbox组件,selectmode属性
# 在listbox里滑动鼠标滚轮,调用set方法。同时修改滚动条位置
theLB = tkinter.Listbox(master,selectmode=tkinter.EXTENDED,yscrollcommand=sb.set)
theLB.pack()
#3.在Listbox里添加选项,下标从零开始。最后可以用END
for item in ['小区告警', '断站告警', '高频告警','告警数据汇总','3g告警','4g告警']:
theLB.insert(tkinter.END, item) #END表示最后一个。里面什么都没有时,END是0;插入一个后,END是1
#theLB.pack(side=tkinter.LEFT, fill=tkinter.BOTH)
'''
theLB.delete(0, END)
#删除Listbox里所有的选项。删除操作有两个参数:起始位置和结束位置
#如果只有一个参数,就指定删除参数对应的选项
'''
#4.滚动条互通互连,要设置滚动条的command选项,推动垂直滚动条调用yview
sb.config(command=theLB.yview)
#5.添加按钮组件选中哪个按下删除哪个
theButton = tkinter.Button(master, text='删除它', \
command=lambda x=theLB:x.delete(tkinter.ACTIVE)) #ACTIVE表示当前选中的值
theButton.pack()
tkinter.mainloop()
Scale 滑块范围组件
from_和to设置数据范围
orient=HORIZONTAL设置Scale的垂直水平方向
tickinterval=5每5个步长显示刻度
resolution设置每次移动多少个长度,等于5的话,每次改变只能改变5
def pyScale1():
root=tkinter.Tk()
#1.有两个参数from和to,但是from参数和Python的关键字冲突了,所以加个下横线
s1 = tkinter.Scale(root, from_=0, to=42)
s1.pack()
#2.默认Scale是垂直的,可以修改orient参数成水平的
s2 = tkinter.Scale(root, from_=0, to=200, orient=tkinter.HORIZONTAL)
s2.pack()
#3.获取滑块当前位置使用的是get方法
def show():
print(s1.get(), s2.get())
tkinter.Button(root, text='获取位置', command=show).pack()
tkinter.mainloop()
def pyScale2():
root = tkinter.Tk()
#tickinterval=5每5个步长显示刻度
#resolution设置每次移动多少个长度,等于5的话,每次改变只能改变5
#设置length长度,不然都堆在一起了
s1 = tkinter.Scale(root, from_=0, to=42, tickinterval=5, resolution=5, length=200).pack()
s2 = tkinter.Scale(root, from_=0, to=200, tickinterval=10, orient=tkinter.HORIZONTAL, length=600).pack()
tkinter.mainloop()