Listbox 列表框
Listbox 只能包含文本项目,并且所有的项目都需要使用相同的字体和颜色。根据组件的配置,用户可以从列表中选择一个或多个选项。
listbox.insert(索引号,字符串) 方法添加文本。eg, inset(0, 'a') or insert(END, 'b') 上一行结束位置插入
listbox.delete(索引号) eg delete(ACTIVE) 删除选中项(多个选中时选择最后一个)
selectmode |
1. 决定选择的模式 2. 四种不同的选择模式:SINGLE(单选)、BROWSE(也是单选,但拖动鼠标或通过方向键可以直接改变选项)、MULTIPLE(多选)和 EXTENDED(也是多选,但需要同时按住 Shift 键或 Ctrl 键或拖拽鼠标实现) 3. 默认是 BROWSE |
xscrollcommand |
1. 为 Listbox 组件添加一条水平滚动条 2. 将此选项与 Scrollbar 组件相关联即可 |
yscrollcommand |
1. 为 Listbox 组件添加一条垂直滚动条 2. 将此选项与 Scrollbar 组件相关联即可 |
方法:
yview(*args)
-- 该方法用于在垂直方向上滚动 Listbox 组件的内容,一般通过绑定 Scollbar 组件的 command 选项来实现(具体操作参考:Scrollbar)
-- 如果第一个参数是 MOVETO,则第二个参数表示滚动到指定的位置:0.0 表示最顶端,1.0 表示最底端
-- 如果第一个参数是 SCROLL,则第二个参数表示滚动的数量,第三个参数表示滚动的单位(可以是 UNITS 或 PAGES),例如:yview(SCROLL, 3, PAGES) 表示向下滚动三页
通常和scrollbar联动,显示更多项目
Scrollbar 滚动条
Scrollbar 组件通常几乎与 Text 组件、Canvas 组件和 Listbox 组件一起使用,水平滚动条还能跟 Entry 组件配合。
为了在某个组件上安装垂直滚动条,需要做两件事:
1.设置该组件的yscrollcommand==Scrollbar的组件的set方法
2.设置Scrollbar组件的command选项为该组件的yview()方法
分析:当 Listbox 组件的可视范围发生改变的时候,Listbox 组件通过调用 set() 方法通知 Scrollbar 组件。而当用户操纵滚动条的时候,将自动调用 Listbox 组件的 yview() 方法。
添加水平滚动条方法跟上边一样,只是将 yscrollcommand 改为 xscrollcommand,yview 改为 xview 即可。
eg:
from tkinter import *
root = Tk()
f1 = Frame(root)
f1.pack(side=TOP)
f2 = Frame(root)
f2.pack(side=BOTTOM)
s = Scrollbar(f1)
s.pack(side=RIGHT, fill=Y)
lb = Listbox(f1, selectmode=EXTENDED, yscrollcommand=s.set)
lb.pack(side=LEFT, fill=BOTH)
for i in range(1000):
lb.insert(END, i)
Button(f2, text='DELETE', command=lambda x=lb:x.delete(ACTIVE)).pack(side=BOTTOM)
s.config(command=lb.yview)
mainloop()
Scale组件
Scale(master=None, **options) (class)
frome_ 和 to 滚动范围
tickinterval 刻度
resolution 步长(一次调节的量)
length 滚动条的长度
get() -- 获得当前滑块的位置
from tkinter import *
root = Tk()
s1 = Scale(root, from_=0, to=50, \
tickinterval=5, resolution=3, length=150)
s1.pack()
s2 = Scale(root, from_=0, to=100, orient=HORIZONTAL, \
tickinterval=10, resolution=20, length=150)
s2.pack()
def location():
print('VERTICAL: %s \nHORIZONTAL: %s' %(s1.get(), s2.get()))
Button(root, text='Location', command=location).pack()
mainloop()
NOTE: 来自小甲鱼视频的学习