tkinter 6 Scale
References
- http://effbot.org/tkinterbook/scale.htm
- http://bbs.fishc.com/thread-59570-1-1.html
简介
Scale为输出限定范围的数字区间,可以为之指定最大值,最小值及步距值,功能上和SPINBOX有些类似,但是使用不同的形式显示的。Scale 组件是通过滑动滑块来选择一个范围内的数字。
使用:当你希望用户输入某个范围内的一个数值,使用 Scale 组件可以很好的代替 Entry 组件。 想要滑动这种样式就用Scale,否则可以选择用SPinbox。
属性和方法
属性
- variable, 绑定一个与 Scale 组件相关联的 Tkinter 变量,该变量存放滑块最新的位置
- from_, to, resolution, 设置scale的起始值,终止值和步长
- bigincrement, 设置“大”增长量, 该选项设置增长量的大小, 默认值是 0,增长量为范围的 1/10
- label, 你可以在垂直的 Scale 组件的顶端右侧(水平的话是左端上方)显示一个文本标签
- orient, 设置该 Scale 组件是水平放置(HORIZONTAL)还是垂直放置(VERTICAL),默认是垂直
- width, 指定 Scale 组件的宽度, 默认值是 50 像素
- length, Scale 组件的长度, 默认值是 100 像素
- tickinterval, 刻度的间隔
- showvalue,是否显示滑块旁边的数字
- digits,
- 设置最多显示多少位数字, 默认值是 0(不开启)
- 例如设置 from 选项为 0,to 选项为 20,digits 选项设置为 5,那么滑块的范围就是在 0.000 ~ 20.000 直接滑动
- command,
- 回调函数,每当滑块发生改变的时候都会自动调用该函数
- 该函数需要有一个唯一的参数,就是最新的滑块位置
- 如果滑块快速地移动,函数可能无法获得每一个位置,但一定会获得滑块停下时的最终位置
- state,
- 默认情况下 Scale 组件支持鼠标事件和键盘事件,可以通过设置该选项为 DISABLED 来禁用此功能
- 默认值是 NORMAL
- takefocus,
- 指定使用 Tab 键是否可以将焦点移动到该 Scale 组件上
- 默认是开启的,可以通过将该选项设置为 False 避免焦点落在此组件上
- background, bg,foreground, fg, borderwidth,bd (背景色,前景色,边框宽度)
- troughcolor, 设置凹槽的颜色
- activebackground,当鼠标在上方飘过的时候滑块的背景颜色
- font, 设置字体的样式(元组的形式)
- cursor, 设置鼠标的样式
- relief, 指定边框样式, 默认值是 SUNKEN 3. 可以选择 FLAT,RAISED,GROOVE 和 RIDGE
- sliderlength, 设置滑块的长度, 默认值是 30 像素
- sliderrelief,设置滑块的样式,可以是 RAISED(默认), FLAT,SUNKEN,GROOVE 和 RIDGE
- repeatdelay, 指定鼠标左键点击滚动条凹槽的响应时间
- repeatinterval, 指定鼠标左键紧按滚动条凹槽时的响应间隔
- highlightbackground, highlightcolor, highlightthickness, 设置获取焦点时候的样式
方法
- get() – 获得当前滑块的位置 – Tkinter 会尽可能地返回一个整型值,否则返回一个浮点型值
- set(value) – 设置 Scale 组件的值(滑块的位置)
- identify(x, y) – 返回一个字符串表示指定位置下(如果有的话)的 Scale 部件 – 返回值可以是:”slider”(滑块),”trough1”(左侧或上侧的凹槽),”trough2”(右侧或下侧的凹槽)或 ““(啥都没有)
- coords(value=None) – 获得当前滑块的位置对应 Scale 组件左上角的相对坐标 – 如果设置 value 参数,则返回当滑块所在该位置时的相对坐标
实例1
def test(master=None):
frm1 = Frame(master)
frm1.pack(anchor=W)
frm2 = Frame(master)
frm2.pack(anchor=W)
def print_info(text):
print(text)
var = IntVar()
Scale(frm1,
from_=-200, # 设置最大值
to=200, # 设置最小值
resolution=5, # 设置步距值
bigincrement=50, # 设置大增量
orient=HORIZONTAL, # 设置水平方向
showvalue=True, # (默认)设置显示值
digit=5, # 设置有效数字位数
tickinterval=150, # 设置刻度的间隔
width=10, # 设置scale的宽度
length=300, # 设置scale的长度
sliderlength=20, # 设置滑块的长度
command=print_info, # 设置回调函数,注意该回调函数必须要有一个参数
label="X:", # 设置scale的名称
variable=var, # 设置绑定变量
).pack()
sc = Scale(frm1,
from_=-10, to=10, resolution=2,
orient=VERTICAL,
bd=5,
bg='grey',
fg='red',
troughcolor='blue',
activebackground='black',
relief=FLAT, # scale的样式
sliderrelief=RIDGE, # 滑块的样式
repeatdelay=50, # 点击滚动条凹槽的响应时间
repeatinterva=50,
label="Y")
sc.pack()
sc.set(7)
print(sc.get())
def call_back():
label_var.set(str(var.get())+"\t"+str(sc.get()))
Button(frm2, text='click', command=call_back).pack()
label_var = StringVar()
Label(frm2, width=300, height=2, bg='black', fg='red', textvariable=label_var).pack()