Please help -- Tkinter Scale widget with DoubleVar is acting weird

Fredrik Lundh fredrik at pythonware.com
Thu Aug 19 13:01:26 EDT 2004


Jared Cohen wrote:

> Hi all. I'm currently using a Tkinter Scale widget which uses a
> DoubleVar as its control variable. I then use the "trace_variable('w',
> callback)" method to invoke a callback whenever the DoubleVar changes.
>
> The problem is this: the callback is triggered when the slider moves (as
> it should), but it's also triggered when I just HOVER the mouse over the
> slider without clicking! Somehow or other, it must think that the
> control variable is being changed, even though it isn't. I *think* that
> this problem is related to the loss of precision that DoubleVars can
> have, but I'm not really sure. Has anyone else experienced this problem?
> How can I fix this?

you could use a "command" callback instead of a traced variable:

import sys, Tkinter, types

root = Tkinter.Tk()

def callback(value):
    print float(value)

slider = Tkinter.Scale(root,
                       from_ = 0.0,
                       to = 1.0,
                       resolution = 0.1,
                       command = callback,
                       orient   = 'horizontal')
slider.grid(sticky='ew')

root.mainloop()

(use slider.get() to get the current value from outside the callback,
and slider.set(x) to set it).

</F> 






More information about the Python-list mailing list