Scale 为输出限定范围的数字区间,可以为之指定最大值,最小值及步距值
创建一个Scale
代码:
import tkinter as tk
root = tk.Tk()
tk.Scale(root).pack()
root.mainloop()
效果:
创建一个垂直 Scale,最大值为100,最小值为0,步距值为1。这个参数设置也就是 Scale的缺省设置了
改变这三个参数,生成 一个水平 Scale,最小值为-500,最大值为500,步距值为5
from_ 设置最小值,注意后面有个_
to 设置最大值
resolution 设置步距值
orient 设置方向
代码:
import tkinter as tk
root = tk.Tk()
tk.Scale(root, from_=-500, to=500, resolution=5, orient='horizontal').pack()
root.mainloop()
效果:
注意 from_的使用方式,在其后添加了"_",避免与关键字 from 的冲突
Scale 绑定变量
代码:
import tkinter as tk
root = tk.Tk()
v = tk.IntVar()
scale = tk.Scale(root, from_=1, to=100, resolution=1, orient='horizontal', variable=v)
scale.pack()
print(v.get())
root.mainloop()
效果:
使用回调函数打印当前的值
代码:
import tkinter as tk
root = tk.Tk()
def printscale(text):
print('text = {}'.format(text))
print('v = {}'.format(v.get()))
v = tk.StringVar()
tk.scale = tk.Scale(root,
from_=1, # 设置最小值
to=100, # 设置最大值
resolution=1, # 设置步距值
orient='horizontal', # 设置水平方向
variable=v, # 绑定变量
command=printscale # 设置回调函数
).pack()
print(v.get())
root.mainloop()
效果:
这个回调函数有一个参数,这个值是当前的 Scale 的值,每移动一个步距就会调用一次这个函数
控制显示位数,可以理解为:Scale 的值为一整形,在输出显示时,它将会被转化为一字符串,如1.2转化为1.2或1.2000都是可以的
属性 digits 是控制显示的数字位数,将数据以8位形式显示,在最后一位会添加一个0
代码:
import tkinter as tk
root = tk.Tk()
def printscale(text):
print('text = {}'.format(text))
print('v = {}'.format(v.get()))
v = tk.StringVar()
tk.scale = tk.Scale(root,
from_=0, # 设置最小值
to=100.0, # 设置最大值
resolution=0.0001, # 设置步距值
orient='horizontal', # 设置水平方向
digits=8, # 设置显示的位数为8
variable=v, # 绑定变量
command=printscale # 设置回调函数
).pack()
print(v.get())
root.mainloop()
结果:
设置 Scale 的标签属性 label
代码:
import tkinter as tk
root = tk.Tk()
tk.scale = tk.Scale(root,
from_=0, # 设置最小值
to=100, # 设置最大值
resolution=1, # 设置步距值
orient='horizontal', # 设置水平方向
label='choice:', # 设置标签值
).pack()
root.mainloop()
效果:
由 label 设置的值会显示在水平 Scale 的上方,用于提示信息
设置/取得 Scale 的值
代码:
import tkinter as tk
root = tk.Tk()
root.geometry('200x100') # 设置弹框为200 x 100大小
v = tk.StringVar()
def text(text):
print(s.get())
s = tk.Scale(root,
from_=0, # 设置最小值
to=100, # 设置最大值
resolution=1, # 设置步距值
orient='horizontal', # 设置水平方向
variable=v, # 绑定变量
label='choice', # 设置标签值
command=text # 设置回调函数
)
# 设置初始值为50
s.set(50)
s.pack()
root.mainloop()
效果:
slider 的位置位于了中间,sl.set(50)起作用了,打印值为50