Skip to content

Scale 组件

Scale 组件跟 Scrollbar 滚动条组件很相似——都可以滚、都有滑块、都是条形……但它们的使用范围可不尽相同。Scale 组件主要是通过滑块来表示某个范围内的一个数字,可以通过修改选项设置范围以及分辨率(精度)。

当希望用户输入某个范围内的一个数值,使用 Scale 组件可以很好地代替 Entry 组件。创建一个指定范围的 Scale 组件其实非常容易,只需要指定它的 from 和 to 两个选项即可。但由于 from 本身是 Python 的关键字,所以为了区分需要在后边紧跟一个下划线,如from_。

python
import tkinter as tk

root = tk.Tk()
root.geometry('500x300')

# 刻度条 1
s1 = tk.Scale(root, from_=0, to=42)
s1.pack()

# 刻度条 2
s2 = tk.Scale(root, from_=0, to=200, orient=tk.HORIZONTAL)
s2.pack()


def show():
    print(s1.get(), s2.get())


tk.Button(root, text='获取位置', command=show).pack()

root.mainloop()

image-20210221155521139

使用 get() 方法可以获取当前滑块的位置

单位刻度条

可以通过 resolution 选项控制分辨率(步长),通过 tickinterval 选项设置刻度:

python
import tkinter as tk

root = tk.Tk()
root.geometry('500x300')
s1 = tk.Scale(root, from_=0, to=42, tickinterval=5, length=200, resolution=5, orient=tk.VERTICAL)
s1.pack()
s2 = tk.Scale(root, from_=0, to=200, length=600, tickinterval=10, orient=tk.HORIZONTAL)
s2.pack()

root.mainloop()

image-20210221155604984