上一篇:Python —(七)Tkinter窗口组件:Listbox
The Tkinter Scrollbar Widget
##简介
Scrollbar(滚动条)组件用于滚动一些组件的可见范围,根据方向可分为垂直滚动条和水平滚动条。Scrollbar 组件常常被用于实现文本、画布和列表框的滚动。
##何时使用 Scrollbar 组件?
Scrollbar 组件通常几乎与 Text 组件、Canvas 组件和 Listbox 组件一起使用,水平滚动条还能跟 Entry 组件配合。
下边例子我们演示如何使用垂直滚动条。为了在某个组件上安装垂直滚动条,你需要做两件事:
##用法
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,i)
lb.pack(side = LEFT,fill=BOTH)
sb.config(command=lb.yview)
mainloop()
(解析:首先增加的这个Listbox,lb = Listbox(root,yscrollcommand=sb.set)要给Listbox这个组件加上滚动条,就一定要设置yscrollcommand或者xscrollcommand选项(一个是垂直滚动一个是水平滚动)这两个的值为Scrollbar实例化对象也就是sb的set方法
接着用循环给组件Listbox加内容,加完后pick()出来,刚刚完成了第一个条件,要跟滚动条互通互联,那么这里还需要设置滚动条的一个command选项,sb.config(command=lb.yview),然后可以直接调用对象的config方法来设置他的值,需要注意的是,因为在这个时候,lb才产生,才pick出来,如果在pick()之前设置就会出问题,然后就是设置sb即滚动组件的command选项为Listbox组件的yview方法就好了,
再来分析一下他的过程:这事实上就是一个互联互通的过程,当用户操作滚动条进行滚动的时候,滚动条首先响应用户的滚动操作,接下来,通过 yview() 方法(Listbox 的一个默认方法),事实上就是设置好怎么去显示垂直滚动对应的内容变化,内容会自动刷新,然后,如果是 Listbox 里面滚动(即用鼠标滚轮直接操作),它就会调用 sb.set() 方法,同时修改滚动条的位置。)
##参数
Scrollbar(master=None, **options) (class)
master – 父组件
**options – 组件选项,下方表格详细列举了各个选项的具体含义和用法:
选项 | 含义 |
activebackground | 1. 指定当鼠标在上方飘过的时候滑块和箭头的背景颜色 2. 默认值由系统指定 |
activerelief | 1. 指定当鼠标在上方飘过的时候滑块的样式 2. 默认值是 "raised" 3. 可以选择 "flat","sunken","groove","ridge" |
background | 1. 指定背景颜色 2. 默认值由系统指定 |
bg | 跟 background 一样 |
borderwidth | 1. 指定边框宽度 2. 默认值是 0 |
bd | 跟 borderwidth 一样 |
command | 1. 当滚动条更新时回调的函数 2. 通常的是指定对应组件的 xview() 或 yview() 方法 |
cursor | 1. 指定当鼠标在上方飘过的时候的鼠标样式 2. 默认值由系统指定 |
elementborderwidth | 1. 指定滚动条和箭头的边框宽度 2. 默认值是 -1(表示使用 borderwidth 选项的值) |
highlightbackground | 1. 指定当滚动条没有获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightcolor | 1. 指定当滚动条获得焦点的时候高亮边框的颜色 2. 默认值由系统指定 |
highlightthickness | 1. 指定高亮边框的宽度 2. 默认值是 0(不带高亮边框) |
jump | 1. 指定当用户拖拽滚动条时的行为 2. 默认值是 False,滚动条的任何一丝变动都会即刻调用 command 选项指定的回调函数 3. 设置为 True 则当用户松开鼠标才调用 |
orient | 1. 指定绘制 "horizontal"(垂直滚动条)还是 "vertical"(水平滚动条) 2. 默认值是 VERTICAL |
relief | 1. 指定边框样式 2. 默认值是 "sunken" 3. 可以选择 "flat","raised","groove","ridge" |
repeatdelay | 1. 该选项指定鼠标左键点击滚动条凹槽的响应时间 2. 默认值是 300(毫秒) |
repeatinterval | 1. 该选项指定鼠标左键紧按滚动条凹槽时的响应间隔 2. 默认值是 100(毫秒) |
takefocus | 1. 指定使用 Tab 键可以将焦点移到该 Scrollbar 组件上 2. 默认是开启的,可以将该选项设置为 False 避免焦点在此组件上 |
troughcolor | 1. 指定凹槽的颜色 2. 默认值由系统指定 |
width | 1. 指定滚动条的宽度 2. 默认值是 16 像素 |
##方法
activate(element)
— 显示 element 参数指定的元素的背景颜色和样式
—element 参数可以设置为:“arrow1”(箭头1),“arrow2”(箭头2)或 “slider”(滑块)
delta(deltax, deltay)
— 给定一个鼠标移动的范围 deltax 和 deltay(像素为单位,deltax 表示水平移动量,deltay 表示垂直移动量),然后该方法返回一个浮点类型的值(范围 -1.0 ~ 1.0)
— 这通常在鼠标绑定上使用,用于确定当用户拖拽鼠标时滑块的如何移动
fraction(x, y)
— 给定一个像素坐标 (x, y),该方法返回最接近给定坐标的滚动条位置(范围 0.0 ~ 1.0)
get()
— 返回当前滑块的位置 (a, b)
— a 值表示当前滑块的顶端或左端的位置,b 值表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)
identify(x, y)
— 返回一个字符串表示指定位置下(如果有的话)的滚动条部件
— 返回值可以是:“arrow1”(箭头1),“arrow2”(箭头2)、“slider”(滑块)或 “”(啥都没有)
set(*args)
— 设置当前滚动条的位置
— 如果设置则需要两个参数 (first, last),first 表示当前滑块的顶端或左端的位置,last 表示当前滑块的底端或右端的位置(范围 0.0 ~ 1.0)
下一篇:Python ----(九)Tkinter窗口组件:Scale