How to use tkinter slider `Scale` widget with discrete steps? How to use tkinter slider `Scale` widget with discrete steps? tkinter tkinter

How to use tkinter slider `Scale` widget with discrete steps?


Edit you could set the command of the slider to a callback, have that callback compare the current value to your list and then jump to the nearest by calling set() on the slider

so:

slider = Slider(parent, from_=0, to=100000, command=callback)

and:

def callback(event):    current = event.widget.get()    #compare value here and select nearest    event.widget.set(newvalue)

Edit:to show a complete (but simple example)

try:    import tkinter as tkexcept ImportError:    import Tkinter as tkvaluelist = [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()

i've tested this in python 2.7.6 and 3.3.2, even when dragging the slider this jumps to the nearest value to where the mouse is currently as opposed to only jumping when you let go of the slider.