编辑您可以将滑块的命令设置为回调,让该回调将当前值与您的列表进行比较,然后通过调用滑块上的 set() 跳转到最近的
所以:
slider = Slider(parent, from_=0, to=100000, command=callback)
和:
def callback(event):
current = event.widget.get()
#compare value here and select nearest
event.widget.set(newvalue)
编辑:展示一个完整的(但简单的例子)
try:
import tkinter as tk
except ImportError:
import Tkinter as tk
valuelist = [0,10,30,60,100,150,210,270]
def valuecheck(value):
newvalue = min(valuelist, key=lambda x:abs(x-float(value)))
slider.set(newvalue)
root = tk.Tk()
slider = tk.Scale(root, from_=min(valuelist), to=max(valuelist), command=valuecheck, orient="horizontal")
slider.pack()
root.mainloop()
我已经在 python 2.7.6 和 3.3.2 中对此进行了测试,即使在拖动滑块时,它也会跳转到与鼠标当前位置最近的值,而不是仅在松开滑块时才跳转。